cmake学习记录
参考链接
开始
对于规范的cmake方式,需要有文件格式,在build文件夹中使用cmake ..
进行编译,产生的各种文件,包括可执行文件都在build下。例,如果cpp文件的名字叫helloworld.cpp,那么在build文件夹中就会生成helloworld可执行使用./helloworld
执行。
CMakeList.txt文件的编写,总体了解
cmake_minimum_required (VERSION 2.8)
#要求的最低版本
project (helloslam)
#用这个指令定义工程名称
add_executable(helloslam helloslam.cpp)
#定义了一个为hello的可执行文件,相关的源文件是helloslam.cpp
对于一般的写法要用到SET指令,见下面关于SET的说明
add_library (hello_shared SHARED libhelloslam.cpp)
#关于静态库与共享库,见下文。
add_executable(useHello useHello.cpp)
target_link_libraries(useHello hello_shared)
更加规范的写法
#外
cmake_minimum_required (VERSION 2.8)
project (demo)
add_subdirectory (src)
#src
aux_source_directory (. SRC_LIST)
include_directories (../include)
add_executable (main ${SRC_LIST})
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
. 为当前目录
…/ 为上级目录
编写的步骤
project(…)
理解:会自动创建两个变量,PROJECT_SOURCE_DIR和PROJECT_NAME,
${PROJECT_SOURCE_DIR}:本CMakeLists.txt所在的文件夹路径
${PROJECT_NAME}:本CMakeLists.txt的project名称
aux_source_directory(路径 变量)
理解:获取路径下所有的.cpp/.c/.cc文件,并赋值给变量中。
用法:aux_source_directory(. SRC_LIST)
,aux_source_directory把当前目录下的源文件存列表存放到变量SRC_LIST里,然后在add_executable里调用SRC_LIST(注意调用变量时的写法)。
add_executable(main ${SRC_LIST})
调用
set(变量 文件名/路径/…)
给文件名/路径名或其他字符串起别名,用${变量}获取变量内容,set(变量 文件名/路径/…)
set( SRC_LIST ./main.c ./testFunc1.c ./testFunc.c) #将源文件放入变量中。
使用同样的方法调用即可,add_executable(main ${SRC_LIST})