簡體   English   中英

CMake-無法鏈接共享庫(子目錄)

[英]CMake - Can't link shared library (subdirectory)

我正在使用CLion和mingw-w64。

我的可執行文件的CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(test_exe)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "D:\\test")

add_subdirectory(test_lib)
include_directories(test_lib/include;test_lib/deps/include)
link_directories(test_lib/deps/lib)

add_executable(test_exe main.cpp)
target_link_libraries(test_exe test_lib)

test_lib的CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(test_lib)

set(CMAKE_CXX_STANDARD 17)

include_directories(include;deps/include)
link_directories(deps/lib)

file(GLOB_RECURSE LIB_SOURCES "include/*.*" "src/*.*")

add_library(test_lib SHARED ${LIB_SOURCES})
target_link_libraries(test_lib libfreetype.a libpugixml.dll.a)

問題是,當我使用add_library(test_lib SHARED ${LIB_SOURCES})添加庫時,出現undefined reference錯誤,但是當我使用add_library(test_lib ${LIB_SOURCES})添加庫時,它可以正常工作。

一個空項目鏈接按預期方式(SHARED和STATIC),但是我不知道為什么這個項目不起作用? 由於庫的原因,我鏈接到test_lib的CMakeLists.txt?

構建靜態庫時,不會發生鏈接。 它不會檢查您是否具有所有必需的庫。

當您對某些共享庫執行相同操作時,然后在某些平台(例如Windows或具有-X defs的Linux)上,則需要解決所有引用。

並且您有一個共享庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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