4
我們有一個C/C++
項目這樣的組織:嵌套cmake的庫
lib1/
CMakeLists.txt
sublib1/
CMakeLists.txt
foo.c
log.c
log.h
目錄sublib1/
與add_library
和target_link_libraries
CMake的在其CMakeLists.txt
文件命令鏈接。
變化: 我們不能從foo.c/some-func
調用log.c/some-func-2
功能。 Linker抱怨說這些函數是未定義的。
它是*編譯器*還是*鏈接器*抱怨?如果是編譯器,是否在foo.c文件中包含了log.h? – Vicky
它是鏈接器,編譯器很容易修復。 – Cartesius00
您是將子庫構建爲靜態庫還是共享庫?如果子庫只用於鏈接到頂層庫(如果頂層庫是共享的),那麼你應該讓子庫成爲一個靜態庫('libxxx.a'而不是'libxxx.so'),然後子庫不會有任何鏈接。 –