file - 让 CMake 将生成的二进制文件与 Assets 一起放在特定的目录结构中

标签 file build-automation cmake

我的项目的目录结构基本如下:

根/源

根/ Assets

根/库

我目前已经设置了 CMake 来编译源代码、编译库,然后通过从根目录调用 make 来链接它们。

然后我必须手动将可执行文件移动到原始 Assets 目​​录中以使其运行,因为这是它期望的位置(并且我们希望使用我们的 Assets 目录结构进行测试,使其接近我们在完成时的预期)。

那么,有什么方法可以告诉 CMake 自动将编译后的二进制文件粘贴到该目录中,并将 Assets 复制过来?由于我们正在构建源代码,因此将可执行文件放回到原始项目源的 Assets 文件夹中似乎很奇怪。

简而言之,有两个问题:有没有办法让 CMake 复制 Assets 和代码,有没有办法让它将生成的可执行文件复制到构建树中的特定位置?

任何帮助将不胜感激---谢谢!

最佳答案

这是一个简单的示例,其结构类似于您的结构:

  • root/src/main.cpp(仅源文件)
  • root/assets(我想让可执行文件去哪里)

  • 这是cmake文件:
    PROJECT(HelloCMake)
    SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${HelloCMake_SOURCE_DIR}/assets)
    add_executable (HelloCMake src/main.cpp) 
    

    当我使用 Visual Studio 对此进行构建时,我将输出放置在 root/assets/debug 中。我必须深入研究如何摆脱额外的配置文件夹(调试)。不完美,但希望这能让你走上正轨。

    编辑...甚至更好:
    INSTALL(TARGETS HelloCMake DESTINATION ${HelloCMake_SOURCE_DIR}/assets)
    

    关于file - 让 CMake 将生成的二进制文件与 Assets 一起放在特定的目录结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4928341/

    相关文章:

    c++ - 使用stof引发异常-C++

    java - 有没有办法将长时间运行的(例如压力测试)分开,这样它们就不会在 Maven 2 中默认运行?

    build - 有 CMake 递归扫描文件夹吗?

    c++ - 使用Cmake在Qt Creator中显示头文件

    windows - 如何使用 cmake 在 vcproj 文件中设置属性?

    android - 需要 Android mp3 文件下载帮助

    file - 使用gstreamer在avi文件中停止音频

    python - 如何更新 Tkinter 标签?

    deployment - TeamCity构建和部署:如何将依赖的工件路径传递给脚本?

    CMake:如何对多个文件运行自定义命令以生成源文件?