如何更改Cmake可执行文件的运行目录

时间:2019-04-24 02:14:55

标签: cmake ctest

我正在为Cmake项目编写测试。该项目包含一个库子项目和一个用于测试库的测试子项目。

测试需要将某些输出图像与某些存储值进行比较,因此该项目包含[ImageReferences]和[ImageOutputs]目录。

项目的结构如下:

-[root]
---CMakeList.txt
---[library]
------CMakeList.txt
---[test]
------[ImageReferences]
------[ImageOutputs]
------CMakeList.txt
---[build]
------[library]
------[test]

如果我在[build]文件夹中运行cmake,则测试可执行文件将最终位于[build / test]文件夹中。这是好的,有意的,但是当我运行ctest时,我无法引用[ImageReferences]和[ImageOutputs]的位置。

当前,我正在执行代码:

ref_path = "../../test/ImageReferences"
out_path = "../../test/ImageOutputs"

这显然是不理想的,并且容易打破。

我要实现的解决方案是更改从中运行可执行文件的目录。如果可以将[test]指定为运行目录,则可以直接引用[ImageReferences]和[ImageOutputs]文件夹,而将可执行文件保留在[build / test]文件夹中。

我试图通过cmake或作为ctest的参数来执行此操作,但是我做不到。我想知道是否有办法实现这一目标。

如果答案是否定的,我想了解我不必再依赖不稳定的本地路径的哪些替代方法了。

1 个答案:

答案 0 :(得分:0)

我设法通过以下方法使其通过了ctest:

add_test(
    NAME ${TESTNAME}
    COMMAND ${TESTNAME}
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

但是,当将CMake与Visual Studio 2017一起使用并从“测试资源管理器”面板运行测试时,此方法不起作用。