一個好的文件組織取決於你的CMake邏輯有多大,或者你期望它變得多大。一般來說:
功能,可以得到重用了很多,你可能會想組織「每個主題」爲.cmake其中包含宏,並且它們包括在其他的CMakeLists.txt文件來加載功能的文件。你會在網上找到很多已經存在的東西(例如,定製特定系統庫的定製Find * .cmake文件非常常見)。常見的約定是在頂級源目錄中有一個目錄「CMake」儘管其他配置也是可能的。
如果你有許多不同的構建目標和他們自己獨特的源文件(例如,在一個項目中有多個庫),最好將它們分成子目錄,每個子目錄有一個CMakeLists.txt文件,頂層CMakeLists.txt文件使用add_subdirectory將它們「掛鉤」到主構建中。
一個項目可能看起來像這樣的「典型」的結構:
project/
CMakeLists.txt
README
CMake/
FindSpecialtyLib1.cmake
FindSpecialtyLib2.cmake
CustomCMakeMacroA.cmake
etc...
include/
CMakeLists.txt (for installing headers, etc. if needed.)
src/
CMakeLists.txt (top level switching logic per user settings, etc.)
lib1/
CMakeLists.txt
src1.cxx
src2.cxx
lib2/
CMakeLists.txt
src1.cxx
src2.c
private_header.h
這只是一個假設的例子,當然是 - 你會想你的邏輯塑造您的具體項目。由於您提到了一個config.cmake文件,可能值得一提的是,根據我的經驗,大多數此類變量設置通常在CMake命令行的cmake-gui或-D定義中完成。一個config.cmake可以作爲分組選項的一種方式,但大多數用戶在設置事物時可能會以gui開頭。我還建議檢查CMake email archives的具體問題 - 我發現它是一個非常有用的資源。