[英]CMake include 3rd party project
我的背景是普通的makefile,我正在嘗試將我們的項目轉換為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的庫
有一條線
project (g3log)
包含在g3log CMakeLists.txt中
我想我在這里缺少一些基本且容易的東西,但是我缺少有關如何解決該問題的指導。 任何幫助表示贊賞。
與3d-party庫鏈接時,應使用庫名 ,而不是項目名 。 對於g3log,庫名稱為g3logger
。
此外,建立三維方項目應該在前面加上使用它:
add_subdirectory (../../external/g3log_src g3log)
...
target_link_libraries( myproject LINK_PUBLIC ${Boost_LIBRARIES} g3logger)
這是因為鏈接應使用目標名稱執行,只有在處理3d-party項目之后,CMake才知道該名稱 。
否則,您只需將-lg3logger
選項傳遞給鏈接器,但是鏈接器無法找到此庫,因為該庫目前尚未構建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.