多標頭檔案和原始檔工程構建CMakeLists寫法
阿新 • • 發佈:2018-12-13
1.最簡單的CMakeLists.txt如下,只有一個原始檔:
cmake_minimum_required (VERSION 2.6) #版本要求
project (Tutorial) #工程名稱
add_executable(Tutorial tutorial.cpp) #制定生成目標
2.如果有兩個以上原始檔,並在同級目錄下:
cmake_minimum_required (VERSION 2.6) #版本要求 project (Tutorial) #工程名稱 add_executable(Tutorial 1.cpp 2.cpp 3.cpp) #制定生成目標
如果有很多原始檔,那麼可用aux_sources_directory統一獲得:
cmake_minimum_required (VERSION 2.6) #版本要求
project (Tutorial) #工程名稱
aux_source_directory(. DIR_SRCS)
add_executable(Tutorial ${DIR_SRCS}) #制定生成目標
3.如果有多個cpp檔案,且不再同級目錄,例如:一級目錄cmake_test 包含main.cpp 和 add資料夾,add資料夾含有add.cpp和add.hpp;那麼首先需要在add資料夾下建立子目錄的CMakeLists.txt,
add_library(add add.cpp) #生成靜態庫
然後在一級目錄下建立整體專案的CMakeLists.txt:
cmake_minimum_required (VERSION 2.6) #版本要求 project (Tutorial) #工程名稱 include_directories("${PROJECT_SOURCE_DIR}add") #新增標頭檔案 add_subdirectory(add) # 新增 add子目錄 aux_source_directory(. DIR_SRCS) add_executable(Tutorial ${DIR_SRCS}) #制定生成目標 target_link_libraries(Tutorial add) #新增連結庫
其中target_link_libraries(Tutorial add)可由link_libraries(add)代替,但是link_libraries(add)一定要放在add_executable()的前面。
4.方法3是多原始檔工程的一種目錄形式,在構建大型工程時將所有的原始檔放在src子目錄中,所得標頭檔案放在include子目錄中是一種較為常見的工程檔案分佈形式。
cmake_minimum_required (VERSION 2.6) #版本要求
project (Tutorial) #工程名稱
include_directories(include) #新增標頭檔案
FILE(GLOB_RECURSE CURRENT_INCLUDE include/*.hpp)
FILE(GLOB_RECURSE CURRENT_SOURCES src/*.cpp) #aux_source_directory(src CURRENT_SOURCES)
add_executable(Tutorial ${CURRENT_SOURCES} ${CURRENT_INCLUDE}) #制定生成目標