从Visual Studio到CMake,如何设置当前工作目录?

euoag5mw  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(170)

我一直在尝试将我当前的Visual Studio项目迁移到使用CMake,CMakeConverter做了一个很棒的工作,生成了一个漂亮的CMakeLists.txt文件,并且构建成功。由于我的代码需要从源目录加载ini和txt文件,这给我带来了一系列问题。运行visual studio解决方案调试器时,它使用源代码$myproject中main.c所在的目录。但是,当使用cmake build进行调试时,它会移动到子目录$myproject\x64\Debug,因此无法找到ini和txt文件。
所以我的问题是,如何将Cmake build的当前工作目录设置为与在没有Cmake的visual studio中运行debugger时相同?或者可以将ini和txt文件添加到运行Cmake的debug目录中吗?

wsewodh2

wsewodh21#

或者可以将ini和txt文件添加到运行Cmake的debug目录中吗?
是的,有可能。下面是一个简单的例子。

add_executable(foobar)

target_sources(foobar PRIVATE main.cpp)

# After foobar has finished building, copy foobar.txt and foobar.ini to the directory of foobar
add_custom_command(TARGET foobar POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_LIST_DIR}/foobar.txt $<TARGET_FILE_DIR:foobar>
    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_LIST_DIR}/foobar.ini $<TARGET_FILE_DIR:foobar>
)

这种方法是跨平台和简单的。
如何将Cmake build的当前工作目录设置为与在没有Cmake的visual studio中运行调试器时相同?
可以设置相关的visual studio调试器属性。CMake使您能够在需要时设置这些属性。
stackoverflow post如果你感兴趣的话。
但是,我个人认为上面显示的第一种方法是上级的。

相关问题