最近好几次需要自己写CMakeLists测试一个模块的使用,很多步骤是重复的,所以总结一下通用的模板。

假设现在有一个编译好的共享库libxxx.so,我想自己写些代码去测试它的接口使用,编译成可执行文件,可以使用类似如下的模板。

CMakeList.txt:

message("start building...")

#指定编译工具链
SET(TOOLCHAIN_HOME "/usr")

#SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER ${TOOLCHAIN_HOME}/bin/aarch64-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_HOME}/bin/aarch64-linux-gnu-g++)

#指定编译选项
#add_compile_options(-DLINUX)
set(CMAKE_CXX_FLAGS "-std=c++11 -O2 -pthread")

cmake_minimum_required(VERSION 2.8)

project(test)

set(DEMO_NAME ${PROJECT_NAME})

#编译的源文件路径,测试代码的源文件
set(DEMO_SRCS srcFile1.cc srcFile2.cc main.cc)

#编译的头文件路径,包括测试代码的头文件和引用模块的头文件
include_directories(
    /your_test_file_path/
    /lib_include_path/
)

#需要链接的库路径
set(LIB_PATH /path_to_lib/libxxx.so)

#添加可执行文件
add_executable(${DEMO_NAME} ${DEMO_SRCS})

#动态链接库
target_link_libraries(${DEMO_NAME} ${LIB_PATH})

然后可以再写个shell脚本一键编译

cmake-linux.sh:

#!/bin/bash

#编译输出目录
BUILD_DIR=build_linux
BINARY_DIR=$BUILD_DIR/bin

#每次编译时删除重新创建
rm -rf $BUILD_DIR
mkdir -p $BUILD_DIR
mkdir -p $BINARY_DIR
pushd $BUILD_DIR

#开始编译,如果想要添加自己的库可以加install
echo "Default mode"
cmake -DCMAKE_INSTALL_PREFIX=install \
          ..
make
#make install

popd

MorpheusDong
4 声望0 粉丝

引用和评论

0 条评论