2017-10-11 119 views
0

我的背景是定期生成文件,我試圖將我們的項目轉換爲CMake設置。CMake包含第三方項目

當我嘗試將g3log作爲子項目時,我陷入了困境。

我在CMakeLists.txt中添加了以下行。 請注意,../../external/g3log_src是第三方產品的頂級目錄。

target_link_libraries(myproject LINK_PUBLIC ${Boost_LIBRARIES} g3log) 
set(DG3_SHARED_LIB OFF) 
include_directories("../../external/g3log_src/include") 
add_subdirectory (../../external/g3log_src LIBRARY_OUTPUT_PATH/g3log) 

但是,它不會真正建立g3log,所以我不能將其鏈接: LD:庫找不到-lg3log

沒有包含在g3log線

project (g3log) 

CMakeLists.txt

我想我錯過了一些基本和簡單的東西,但我缺乏如何解決這個問題的指針。任何幫助表示讚賞。

回答

1

與3d方庫鏈接時,應該使用庫名稱,而不是項目名稱。在g3log的情況下,庫的名稱是g3logger

此外,建立三維方項目應該前插使用它:

add_subdirectory (../../external/g3log_src g3log) 
... 
target_link_libraries(myproject LINK_PUBLIC ${Boost_LIBRARIES} g3logger) 

這是因爲要與目標名稱,這是隻有處理3D方項目後已知的CMake進行鏈接。

否則,您只需將-lg3logger選項傳遞給鏈接程序,但鏈接程序找不到此庫,因爲此時尚未構建該庫。