一、demo
cmake_minimum_required (VERSION 2.8) #指定CMake的最低版本要求
project (demo) #指定项目名称
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") #设置编译选项
set(SOURCES # 设置源文件
src/main.cpp
src/foo.cpp
src/bar.cpp
)
add_executable(myapp ${SOURCES}) # 添加可执行文件,myapp是生成的可执行文件的名称
二、项目级构建
一般会把源文件放到src目录下,把头文件放入到include文件下,生成的对象文件放入到build目录下,最终输出的可执行程序文件会放到bin目录下,这样整个结构更加清晰。
工程使用了两级CMakeLists.txt,最外层的CMakeLists.txt用于掌控全局,使用add_subdirectory来控制其它目录下的CMakeLists.txt的运行。整体目录结构如下:
2.2 cmakelists编写
最外层
cmake_minimum_required (VERSION 2.8)
project (demo)
add_subdirectory (src/test1)
add_subdirectory (src/test2)
...
内部
aux_source_directory (. SRC_LIST) # 把当前目录下的源文件存列表存放到变量SRC_LIST里;
#aux_source_directory()也存在弊端,它会把指定目录下的所有源文件都加进来,可能会加入一些我们不需要的文件,此时我们可以使用set命令去新建变量来存放需要的源文件
set( SRC_LIST
./main.c
./testFunc1.c
./testFunc.c)
include_directories (../include) # 添加多个指定头文件的搜索路径,路径之间用空格分隔
add_executable (main ${SRC_LIST})
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #把存放elf文件的位置设置为工程根目录下的bin目录(非必须)
参考:【C++】Cmake使用教程(看这一篇就够了)_c++ cmake-CSDN博客
Linux下使用VS Code + CMake 调试c++程序_vscode gdb cmake linux-CSDN博客