【问题标题】:CMake - Copy DLLs to the runtime output directoryCMake - 将 DLL 复制到运行时输出目录
【发布时间】:2018-05-02 14:28:40
【问题描述】:

我正在尝试创建一个简单的 CMake,它检索 Qt 的 DLL 并将其复制到 cmake 创建我的可执行文件的目录中。

使用 g++ 或 clang 效果很好,但 MSVC (Visual Studio 2017) 会创建一个 DebugRelease 目录。

我找不到方法来检索写入可执行文件的真实目录的路径(${CMAKE_CURRENT_BINARY_DIR} 返回 ReleaseDebug 的父目录)。

我看到有人使用目标属性RUNTIME_OUTPUT_DIRECTORY,但我使用它时它是空的。

知道我该怎么做吗?我不想改变输出目录,我只想知道它的路径(所以我不想改变RUNTIME_OUTPUT_DIRECTORY的值)

谢谢!

【问题讨论】:

    标签: qt visual-c++ cmake


    【解决方案1】:

    在 Visual Studio 中,在 配置 步骤期间(处理 CMakeLists.txt 文件时)build type 未设置,因此没有 build-type em>-因变量或属性可直接使用。相反,应该使用generator-expressions

    例如,可执行文件或库目标的输出目录可以使用$<TARGET_FILE_DIR:tgt>生成器表达式提取。它将返回完整的目录,已经附加了“Release/”或“Debug/”。

    请注意,生成器表达式只有在文档中明确允许使用时才能使用。例如,它们不能在message() 命令中使用。

    或者,您可以显式设置变量CMAKE_RUNTIME_OUTPUT_DIRECTORY,因此对于每种构建类型,只需将适当的子目录附加到它。但是为了提取这个子目录,你应该再次使用生成器表达式:$<CONFIG>


    从技术上讲,可以为任何构建类型设置相同的输出目录。但不建议这样做,因为来自一种构建类型的文件将被来自另一种构建类型的文件覆盖

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 2021-11-13
      • 2019-03-17
      相关资源
      最近更新 更多