1. 程式人生 > >cmake處理多原始檔目錄的方法

cmake處理多原始檔目錄的方法

cmake處理原始碼分佈在不同目錄中的情況也很簡單,現在假設我們的原始碼分佈情況如下:

原始碼的分佈情況


其中src目錄下的檔案要編譯成一個連結庫

第一步,專案主目錄中的CMakelist.txt

在目錄step2中建立檔案CMakelist.txt檔案內容如下:

目錄 step2 中的 CMakeLists.txt

1 PROJECT(main)
2 CMAKE_MINIMUM_REQUIRED(VERSION 2.6) 
3 ADD_SUBDIRECTORY( src )
4 AUX_SOURCE_DIRECTORY(. DIR_SRCS)
5 ADD_EXECUTABLE(main ${
DIR_SRCS}  ) 6 TARGET_LINK_LIBRARIES( main Test )
相對於上一篇中單個檔案的Cmakelist.txt,這個多個原始檔的Cmakelist.txt添加了一下的內容:

第三行,使用命令ADD_SUBDIRECTORY指明本專案包含一個子目錄src。

第六行,使用命令 TARGET_LINK_LIBRARIES指明可執行檔案main需要連線一個名為Test的連結庫

第二步,子目錄中的CmakeLists.txt

在子目錄中src中建立CmakeLists.txt檔案內容如下:

1 AUX_SOURCE_DIRECTORY(. DIR_TEST1_SRCS)
2
ADD_LIBRARY ( Test ${DIR_TEST1_SRCS})

在該檔案中使用ADD_LIBRARY將src目錄中的原始檔編譯為共享庫

第三步,執行cmake

至此我們完成了專案所有CMAkelists.txt檔案的編寫,進入目錄step2中依次執行命令 “cmake  .”he "make"得到如下結果:

處理多原始檔目錄時 cmake 的執行結果

在執行cmake的過程中,首先解析目錄step2中的CMakeList.txt,當程式執行命令ADD_SUBDIRECTORY(src)時,進入目錄src對其中的CMakeLists.txt進行解析

參考文獻:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/