J'ai un projet avec la structure suivante:
project_name/CMakeLists.txt
project_name/src
project_name/resources
...
project_name-build/configuration_name/project_name.exe
Je veux que mon application soit exécutée dans le répertoire racine du projet project_name
pour pouvoir accéder directement à resources
.
CMake fournit-il une méthode pour spécifier cette propriété, ou vais-je devoir la définir manuellement dans chaque environnement de build que j'utilise?
J'ai regardé autour de moi dans la documentation et je n'ai rien trouvé d'autre que la possibilité de mettre en place un événement post-build pour exécuter mon projet à partir du répertoire souhaité ce qui est moins que souhaitable. J'ai également constaté que le paramètre de répertoire de travail pour Visual Studio est enregistré dans un fichier par utilisateur (.vcxproj.user) que je ne crois pas que CMake génère (ce qui indique que la réponse est probablement non) .
Depuis CMake 3.8, il y a VS_DEBUGGER_WORKING_DIRECTORY
propriété cible, qui vous permet de définir le répertoire de travail du débogueur pour une cible dans Visual Studio.
Exemple d'utilisation:
set_property(TARGET MyTarget PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
Comme l'a souligné drescherjm (dans son commentaire sur la question) CMake ne fournit pas de méthode pour définir directement un répertoire de travail. Cependant, CMake fournit des méthodes indirectes pour ce faire.
Je pense que le chemin que je vais prendre est de tilisez la commande configure_file pour remplir un fichier .user de modèle .
Voici une solution plus simple. Collez ceci à la fin de votre 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>")
Il écrase le fichier vcxproj.user par défaut pour le projet en cours et spécifie $ (OutDir) pour le répertoire de travail comme souhaité pour le débogage. Assurez-vous que $ PROJECT_NAME est le nom de votre projet.