【发布时间】:2018-11-21 16:42:06
【问题描述】:
我正在使用 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}) 添加库时,它可以正常工作。
一个空的项目链接符合预期(共享和静态),但我想知道为什么这个项目不起作用?因为我在 test_lib 的 CMakeLists.txt 中链接的库?
【问题讨论】: