CMake使用名为CMakeLists.txt的配置文件,可以在其中定义编译和依赖关系过程。
定义CMake最低版本
cmake_minimum_required(VERSION 3.0)
定义项目名称,保存在PROJECT_NAME变量中
project(CMakeTest)
创建可执行命令,将源代码编译成名为CMakeTest的可执行文件
add_executable(${PROJECT_NAME} main.cpp)
定义库的源文件及名称(生成共享库.dll或静态库.lib)
add_library(Hello hello.cpp hello.h)
add_executable(executable main.cpp)
将可执行文件链接到所需库
target_link_libraries(executable hello)
根文件夹
添加子文件夹utils
add_subdirectory(utils)
utils文件夹中的CMakeLists.txt中,编写一个将包含在主项目文件夹中的新库
允许主项目检测所有头文件
target_include_directories(Utils PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
CMake能够搜索依赖项和外部库.
# 编译X64
set (CMAKE_EXE_LINKER_FLAGS /machine:x64)
# 设置opencv 依赖包路径
set (OpenCV_DIR D:/opencv/build/x64/vc14/lib)
# FIND_PACKAGE 查找依赖项 所需最低版本 是必需还是可选 查找所有opencv子模
# 可指定要包含在项目中的子模块 FIND_PACKAGE( OpenCV 4.0.0 REQUIRED core)
# Requires OpenCV
FIND_PACKAGE( OpenCV 4.0.0 REQUIRED )
# ${OpenCV_VERSION} 存储OpenCV包版本的变量
MESSAGE("OpenCV version : ${OpenCV_VERSION}")
#向环境中添加指定库的头文件
include_directories(${OpenCV_INCLUDE_DIRS})
#向环境中添加指定库的路径
link_directories(${OpenCV_LIB_DIR})
ADD_EXECUTABLE( executable main.cpp )
# 将执行文件与OpenCV库链接
TARGET_LINK_LIBRARIES( executable ${OpenCV_LIBS} )