编写自己的CMakeLists.txt
- 1. 一个CMakeLists.txt的基本内容
- 2. 项目包含多个文件或文件夹时添加方式
- 3. 添加链接库
1. 一个CMakeLists.txt的基本内容
cmake_minimum_required(VERSION 3.3.0)
project(<projectName>)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
include_directories(${CMAKE_SOURCE_DIR}/include)
add_executable(<name> ${CMAKE_SOURCE_DIR}/main.cpp)
target_link_libraries( <target>
[item1]
[item2]
...
)
2. 项目包含多个文件或文件夹时添加方式
通常一个项目会有很多个cpp文件,或者多个文件夹,每个文件夹下有多个文件便于代码管理,这时候总不能去手敲每个文件的路径到add_executable()
里面去。
(网上很多教程就只拿只有一个main.cpp的举例,你家项目只有一个main文件啊?)
例如项目下还包含一个文件夹Part1
,里面有很多cpp文件,这时候可以通过FILE
生成一个这些文件的总目录,然后直接加到add_executable()
即可
方式如下:
FILE(GLOB_RECURSE part1_files "${CMAKE_SOURCE_DIR}/Part1/src/*.cpp")
生成总目录后,再在add_executable()
进行添加即可:
add_executable(<name> ${CMAKE_SOURCE_DIR}/main.cpp ${part1_files})
项目文件结构示例
.
├── bin
├── build
├── include
├── Part1
│ ├── include
│ └── src
│ ├── a.cpp
│ ├── b.cpp
│ └── ...
├── lib
├── main.cpp
├── opencv
│ ├── include
│ │ ├── opencv
│ │ └── opencv2
│ └── lib
│ ├── libopencv_world.so
│ ├── libopencv_world.so.3.4
│ └── libopencv_world.so.3.4.16
└── CMakeLists.txt
3. 添加链接库
当项目下有要使用的库时,这里以linux下的opencv动态链接库文件举例
set(myOpenCV_Path ${CMAKE_SOURCE_DIR}/opencv)
include_directories(${myOpenCV_Path}/include)
set(OpenCV_LIBS ${myOpenCV_Path}/lib/libopencv_world.so)
target_link_libraries( <target>
${OpenCV_LIBS}
...
)
本文只记录了最基础的所需项,有了这些一般简单的项目都能够正常编译运行了,CMakeLists.txt当然还有更多更灵活高级的写法和东西,例如install之类的,根据项目需求自行添加,后续学习到了再进行记录
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)