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進行解析

