1. 程式人生 > >多標頭檔案和原始檔工程構建CMakeLists寫法

多標頭檔案和原始檔工程構建CMakeLists寫法

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})  #制定生成目標