繁体   English   中英

CMake共享库在子目录中

[英]CMake shared library in subdirectory

我的问题相对容易解释。 我有一个主要在Windows上运行的CMake项目(使用CLion)。

一个主要的CMakeLists.txt项目,链接了2个子目录

  • src/Library共享库
  • src/Executable可执行链接Library

请参阅下面的项目结构。

项目结构 #主要CMakeLists.txt

cmake_minimum_required(VERSION 3.8)
project(TestTest)

set(CMAKE_CXX_STANDARD 11)

add_subdirectory(src/Library)
add_subdirectory(src/Executable)


# src/Library/CMakeLists.txt
add_subdirectory(include)
add_subdirectory(src)

add_library(TestLib SHARED ${TESTLIB_H_FILES} ${TESTLIB_SRC_FILES} )
target_include_directories(TestLib PUBLIC include)

#src/Executable/CMakeLists.txt

add_subdirectory(src)
add_executable(Executable ${EXECUTABLE_SRC_FILES})
target_link_libraries(Executable PUBLIC TestLib)

我的问题是可执行文件在运行时找不到共享库。

我试图添加link_directories( ${CMAKE_CURRENT_BINARY_DIR}/src/Library)但是没有用。

我想念什么?

请注意:我不希望CMake手动/自动将共享库复制到可执行文件旁边,因为我相信我会失去共享库的调试“功能”。 我将通过GDB收到以下错误消息: No source file named C:/Users/flatron/CLionProjects/TestTest/src/Library/src/libr‌​ary.cpp.

所有建议都值得欢迎和赞赏,

谢谢您的帮助

我建议使用以下cmake命令:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

这会将所有可执行文件和共享库构建到bin文件夹中。 因此,无需手动复制任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM