如何在 CMake 中打印 WORKING_DIRECTORY?

How to print WORKING_DIRECTORY in CMake?

我的 CMakeLists.txt 中有这一行:

add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})

问题是WORKING_DIRECTORY似乎没有设置正确。

message("Futurama ${PROJECT_SOURCE_DIR}")

它表明 PROJECT_SOURCE_DIR 是我所期望的,但是当我 运行 我生成的 VS 项目时,工作文件夹是 $(ProjectDir),这是错误的,因为我进行了构建在单独的文件夹中。

Visual Studio 生成器的 WORKING_DIRECTORY 设置是否有可能被破坏?

如果不是,我如何在add_test之后打印WORKING_DIRECTORY的状态?

您可以通过多种方式验证 WORKING_DIRECTORY 是否设置正确。

以编程方式(如评论):

get_test_property(${PROJECT_NAME} WORKING_DIRECTORY test_dir)
message("My test's working directory: ${test_dir}")

检验:

导航到构建文件夹中的 CTestTestfile.cmake 文件,然后在文本编辑器中打开它。您可以在此处的命令中看到 WORKING_DIRECTORY 属性 已正确设置。


但是,为 RUN_TESTS Visual Studio 项目的 工作目录 列出的 $(ProjectDir) 指向构建目录中的文件夹;这是一个 Debugging 属性 并且在 运行 进行 CTest 测试时并没有实际使用。这在 Visual Studio 调试可执行文件时使用。因为 RUN_TESTS 项目实际上不能被调试(CTest 测试实际上是 运行 作为一个 post-build 事件),这个 Working Directory 属性 不适用于您的情况。