最近好几次须要本人写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_linuxBINARY_DIR=$BUILD_DIR/bin#每次编译时删除从新创立rm -rf $BUILD_DIRmkdir -p $BUILD_DIRmkdir -p $BINARY_DIRpushd $BUILD_DIR#开始编译,如果想要增加本人的库能够加installecho "Default mode"cmake -DCMAKE_INSTALL_PREFIX=install \          ..make#make installpopd