gpt4 book ai didi

c++ - 子目录中的 CMake 共享库

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:21 24 4
gpt4 key购买 nike

我的问题解释起来比较简单。我有一个主要在 Windows 上运行的 CMake 项目(使用 CLion)。

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

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

请参阅下面的项目结构。

Project structure # 主 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 文件夹中。因此无需手动复制任何内容。

关于c++ - 子目录中的 CMake 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47251874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com