cmake working-directory

¿CMake ofrece un método para configurar el directorio de trabajo para un sistema de compilación determinado para usar cuando se ejecuta/depura el proyecto?



working-directory (3)

Aquí hay una solución más fácil. Pega esto al final de tu 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>")

Sobrescribe el archivo vcxproj.user predeterminado para el proyecto actual y especifica $ (OutDir) para el Directorio de trabajo según se desee para la depuración. Asegúrate de que $ PROJECT_NAME sea el nombre de tu proyecto.

Tengo un proyecto con la siguiente estructura:

project_name/CMakeLists.txt project_name/src project_name/resources ... project_name-build/configuration_name/project_name.exe

Quiero que mi aplicación se ejecute en el directorio raíz del proyecto project_name para que pueda acceder directamente a los resources .

¿CMake proporciona un método para especificar esta propiedad, o tendré que configurarlo manualmente en cada entorno de compilación que uso?

He buscado en la documentación y no he encontrado nada más que la posibilidad de configurar un evento posterior a la compilación para ejecutar mi proyecto desde el directorio deseado, lo cual es menos que deseable. También encontré que la configuración del directorio de trabajo para Visual Studio se guarda en un archivo por usuario (.vcxproj.user) que no creo que CMake genere (lo que apunta a que la respuesta es probablemente no).


Como señaló drescherjm (en su comentario sobre la pregunta), CMake no proporciona un método para establecer directamente un directorio de trabajo. Sin embargo, CMake proporciona métodos indirectos para hacerlo.

La ruta que creo que tomaré es usar el comando configure_file para completar un archivo de plantilla .user .


Desde CMake 3.8, existe la propiedad de destino VS_DEBUGGER_WORKING_DIRECTORY , que le permite configurar el directorio de trabajo del depurador para un destino en Visual Studio.

Ejemplo de uso:

set_property(TARGET MyTarget PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")