簡體   English   中英

CMake包括第三方項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM