Pet*_*ark 27 cmake working-directory
我有一个具有以下结构的项目:
project_name/CMakeLists.txt
project_name/src
project_name/resources
...
project_name-build/configuration_name/project_name.exe
Run Code Online (Sandbox Code Playgroud)
我希望我的应用程序在根项目目录中运行,project_name
以便它可以直接访问resources
.
CMake是否提供了指定此属性的方法,还是我必须在我使用的每个构建环境中手动设置它?
我在文档中查看过,除了设置构建后事件以从期望的目录运行我的项目之外没有找到任何其他内容.我还发现Visual Studio的工作目录设置保存在每个用户文件(.vcxproj.user)中,我不相信CMake生成(这表明答案可能不是).
tam*_*bre 35
从CMake 3.8开始,有VS_DEBUGGER_WORKING_DIRECTORY
target属性,允许您在Visual Studio中为目标设置调试器工作目录.
用法示例:
set_property(TARGET MyTarget PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
Run Code Online (Sandbox Code Playgroud)
正如drescherjm指出的那样(在他对这个问题的评论中),CMake没有提供直接设置工作目录的方法.但是,CMake确实提供了这样做的间接方法.
我认为我将采用的路径是使用configure_file命令填写模板.user文件.
小智 5
这是一个更简单的解决方案。将其粘贴到 cmake 的末尾:
file( WRITE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.vcxproj.user"
"<?xml version=\"1.0\" encoding=\"utf-8\"?> \
<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">
<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">
<LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">
<LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>")
Run Code Online (Sandbox Code Playgroud)
它会覆盖当前项目的默认 vcxproj.user 文件,并根据调试需要为工作目录指定 $(OutDir)。确保 $PROJECT_NAME 是您的项目名称。
归档时间: |
|
查看次数: |
21391 次 |
最近记录: |