CmakeLists.txt的结构
常用的命令
cmake_minimum_required(VERSION 3.20)
声明要求的cmake的最低版本
终端输入camke -version
可以查看camke的版本
project(test)
声明工程的名字
还可以增加版本号,如:project(test version 1.1)
set(CMAKE_CXX_COMPILE "g++")
设置使用g++的编译器;
SET(CMAKE_BUILD_TYPE "release")
设置camke的编译模式,有release和debug两种
PROJECT_SOURCE_DIR
是CMakeLists.txt
的绝对路径
set(CMAKE_CXX_FLAGS "-std=c++11 -march=native -03")
参数CMAKE_CXX_FLAGS
:set compiler for c++ language
添加c++11的标准支持,*.CPP文件的编译选项
-march=native
指定目标的程序的cpu架构来进行程序优化
native
就是相当于自检cpu, -march
是gcc的优化项目
后面的 -03 是用来调节编译时的优化程度,最高是 -03 最低是 -00 ,不做优化
-0x这个参数只有在CMake -DCMAKE_BUILD_TYPE=release
时有效,因为debug版本的项目生成的可执行文件需要有调试信息并且不需要进行优化,但是release版本的不需要调试信息,但需要优化。
set(use_test ${SOURCES_DIRECTORY}/user_accounts.cpp)
message(“use_test: ${use_test}”)
调试手段
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)
设置链接目录
INCLUDE_DIRECTORY(${PROJECT_SOURCE_DIR}/include)
设置头文件目录
ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/src)
增加子文件夹,进入源代码文件夹继续构建
find_package(OpenCV REQUIRED)
添加依赖,去寻找该库的头文件位置、库文件位置以及库文件名称,并将其设为变量,返回提供给CmakeList.txt
其他部分。
在CmakeLists.txt
中,使用第三方库的步骤
1. find_package
find_package(OpenCV REQUIRED)
2. include_directories
include_directories(${OpenCV_INCLUDE_DIRS})
3. target_link_libraries
target_link_libraries(${OpenCV_LIBRARIES})
add_executable( 程序名 源代码文件)
生成一个可执行的程序
add_library(库文件名称 STATIC 文件)
一般,库文件的名称通常都是libxxx.so
,这里只需要写 xxx
即可
必须要有的语句
project(xxx)
add_subdirectory(子文件夹名称) #父目录必须,子目录不必
add_library(库文件名称 STATIC 文件) #通常子目录(二选一)
add_executable(可执行文件名称 文件) #通常父目录(二选一)
include_directories(路径)
link_directories(路径)
target_link_libraries(库文件名称/可执行文件名称 链接的库文件名称)