在我的項目的根目錄中,我有一個my_lib
的子目錄,另一個用於my_app
。 庫my_lib
定義了填充由鏈接器定義的節的表,因此這些表不直接被my_app
使用,因此該庫未鏈接。C/cmake - 如何在TARGET_LINK_LIBRARIES中指定庫時將鏈接器標誌添加到(未使用)庫中?
要強制my_lib被掛我加了標誌--whole歸檔描述here.
和它的作品!
在根目錄的CMakelist.txt我有以下:
SET(CMAKE_EXE_LINKER_FLAGS "-mmcu=cc430f6137 -Wl,--gc-sections -Wl,--whole-archive -lMY_LIB -Wl,--no-whole-archive")
ADD_SUBDIRECTORY(my_lib)
在my_lib
的CMakelist.txt
我有:
ADD_LIBRARY(MY_LIB
my_lib.c
)
TARGET_LINK_LIBRARIES(MY_LIB)
在my_app
的CMakelist.txt
我有:
ADD_EXECUTABLE(my_app my_app.c)
TARGET_LINK_LIBRARIES(my_app MY_LIB)
我的問題是我只想使用這個標誌(--whole-archive
),如果TARGET_LINK_LIBRARIES
中的MY_LIB
被指定爲CMakelist.txt
的my_app
。
如果最後一行TARGET_LINK_LIBRARIES(my_app MY_LIB)
不存在,我不想在CMAKE_EXE_LINKER_FLAGS
中添加"-Wl,--whole-archive -lMY_LIB -Wl,--no-whole-archive"
。
我試圖從CMakelist.txt根刪除此標誌,並添加以下到CMakelist.txt
在my_lib
子目錄:
SET_TARGET_PROPERTIES(MY_LIB PROPERTIES CMAKE_EXE_LINKER_FLAGS "-Wl,--whole-archive -lMY_LIB -Wl,--no-whole-archive")
但是,這是行不通的。
我該怎麼做?