我試圖將我的項目移動到CMake,同時在編譯過程中進行了一些優化。CMake:重用爲lib構建的目標文件到另一個lib目標中
這裏的交易:
- 我有幾個子目錄所(必須的)每個編譯成一個靜態庫(這工作)。
- 我想將每個子目錄中的所有目標文件都收集到另一個更大,完整的靜態庫中。
它看起來像這樣:
.
libBig.a # made from object from subdir1 and subdir2
subdir1/
src/
libSubdir1.a
subdir2/
src/
libSubdir2.a
今天,我設法使用全局變量,其中每個子目錄的CMakeLists.txt將追加自己的源文件。我用這個變量作爲「源」輸入我的大庫:
# the big library depends on all the source files
# ${all_src} is automatically filled with each subdir's cpp file
get_property(BigLib_src GLOBAL PROPERTY all_src)
add_library(Big STATIC ${BigLib_src}) # recompiles all the sources
現在,這個工作,不是太糟糕了,但事情是,我所有的源文件被編譯兩次:一次是針對子目錄圖書館,一次爲大圖書館。
CMake似乎忘記了它已經構建它們。
我有保留subdir庫和ar
不能合併兩個靜態庫。
你知道該怎麼做嗎?
你在移動向CMake無論如何,爲什麼? – 2011-02-24 01:52:44
從手工Makefiles!我希望它很容易編譯跨平臺,易於與IDE集成,我想:爲什麼不呢? – Gui13 2011-02-24 08:58:58