我的C++項目非常大,會生成5個不同的二進制文件。例如,在VStudio中,我的單一解決方案有5個不同的「項目」。例如,在XCode中,我的單個項目有5個不同的目標。CMake從常見源樹生成多個項目的方法
該代碼被組織在一個非常深的「src」文件夾中,其中包含多個嵌套子文件夾。這個src文件夾對所有5個二進制文件都是通用的,因爲大部分源代碼都被大量重用,但每個二進制文件都需要一些源代碼,但不是全部。
我想知道如何有效地創建一個CMakeList.txt,可以創建我所需要的。
注:
- 疏理代碼到一個不同的結構是不是一種選擇也不是使代碼一堆靜態庫。
- 每個子文件夾的CMakeList.txt不是一個選項。其中有太多,維護將是一場噩夢。
- 的文件(GLOB_RECURSE是也不是因爲它會拿起一噸的源文件的每個二進制是不需要編譯特定的二進制一個很好的選擇。
- 理想情況下,XCode項目(含5個目標)或者一個VStudio溶液(5個項目)將被生成。我不想5個不同的項目來打開。
我將與需要手動從列表巨頭添加/刪除源文件的某處完全的內容。 ..在一個可以被CMake吸收的外部文件中。例如SourceFilesForBinary1.txt,SourceFilesForBinary2.txt等,但我不知道如何做到這一點,或者如果這是瘋了。
任何意見,將不勝感激。
作爲一般說明,如果對一個不明原因的「不解決它就像這個」子句的關聯列表提出問題是非常沒有幫助的。如果你解釋爲什麼你拒絕了他們每個人,其他人可能會發現你錯過的東西,這使他們成爲你的問題的解決方案! –
我實際上使用include()以及「target_sources」來實現我所希望的。這讓我可以爲每個目標單獨製作一個「小型生成文件」,以保持目標特定設置和源代碼不受大部分CMake邏輯的影響。 – cjserio