最小CMakeLists
cmake_minimum_required(VERSION 3.15) //指定CMAKE最小的版本号
project(main) //设置项目的名称
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SRC) //将CMAKE文件夹下的文件都加到SRC里
add_executable(${PROJECT_NAME} ${SRC}) //生成可执行文件
包含头文件
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/dir
)
指定编译包含的源文件
搜索CMAKE所在文件夹下的所有CPP文件
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SRC)
明确指定包含哪些文件
add_library(demo demo.cpp test.cpp util.cpp)
查找指定的库文件
find_package( OpenCV REQUIRED )
设置链接库搜索目录
link_directories(
${CMAKE_CURRENT_BINARY_DIR}/libs
)
设置目标需要链接的库
在 Windows 下,系统会根据链接库目录,搜索xxx.lib 文件,Linux 下会搜索 xxx.so 或者 xxx.a 文件,如果都存在会优先链接动态库(so 后缀)。
target_link_libraries( # 目标库
demo
# 目标库需要链接的库
# log-lib 是上面 find_library 指定的变量名
${log-lib}
)
或
target_link_libraries(
${PROJECT_NAME}
libs
)
指定链接库
target_link_libraries(demo libface.a) # 链接libface.a
target_link_libraries(demo libface.so) # 链接libface.so
指定全路径
target_link_libraries(demo ${CMAKE_CURRENT_SOURCE_DIR}/libs/libface.a)
target_link_libraries(demo ${CMAKE_CURRENT_SOURCE_DIR}/libs/libface.so)
链接多个库
target_link_libraries(demo
${CMAKE_CURRENT_SOURCE_DIR}/libs/libface.a
boost_system.a
boost_thread
pthread)
添加依赖
add_dependencies(${PROJECT_NAME} dep_lib)
添加子文件夹
add_subdirectory(dir_name)
打印消息
message("show message")
编译生成
编译生成二进制bin文件
add_executable(${PROJECT_NAME} ${SRC})
编译生成库文件 ```bash add_library(${PROJECT_NAME} SHARED # 编译生成动态库 .so ${ALL_SRC} )
add_library(${PROJECT_NAME} STATIC # 编译生成静态库 .a ${ALL_SRC} ) ```