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} )