【问题标题】:how do I add external test files to a cmake project如何将外部测试文件添加到 cmake 项目
【发布时间】:2016-03-04 14:38:11
【问题描述】:

我正在通过 cmake 构建一个名为 myBinary 的可执行文件

它由 2 个 C++ 源文件 A.cxx 和 B.cxx 构建并与 myLibrary 链接

我在同一目录中有一个测试文件 myTest.txt

我使用了一个构建目录,我制作了 makefiles 文件

mkdir build
cd build
cmake ../src

我怎么可能将此txt文件(myTest.txt)添加到cmake文件中以拥有它

a) 复制到构建目录
b) 当 cmake 在 windows 上构建时包含在 Visual Studio 解决方案树中


cmake_minimum_required (VERSION 2.8.11)

include_directories(../../framework)

add_executable(myBinary A.cxx B.cxx)

target_include_directories (mylibrary PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries (mylibrary)

[更新 1]

如果我将 txt 添加为源文件,它将出现在 Visual Studio 解决方案中,但不会出现在复制的目录中,

理想情况下,我还需要将文件复制到“调试”目录,即目标可执行目录。这样,当我测试 myBinary 目录时,该文件将位于正确的位置。

将 myBinary 视为可能的 googletest 可执行文件,我想在其中检查单元测试中文件的读取情况。

add_executable(myBinary 
               A.cxx 
               B.cxx
               myTest.txt
              )

【问题讨论】:

  • 将源文件添加到 Visual Studio 解决方案中(例如,正如您在 [Update 1] 下的代码中那样)并创建目标/命令以将文件复制到构建目录中。这种方法有什么问题?至于复制文件,另见that question

标签: cmake


【解决方案1】:

您可以使用add_custom_command() 使用generator expressions 添加构建后步骤:

add_custom_command(
    TARGET myBinary 
    POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy  
                     "${CMAKE_CURRENT_SOURCE_DIR}/myTest.txt" 
                     "$<TARGET_FILE_DIR:myBinary>/myTest.txt"
)

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2022-12-03
    • 1970-01-01
    • 2016-10-17
    • 2011-05-26
    相关资源
    最近更新 更多