6 votes

Comment changer le chemin du fichier à créer dans cmake ?

J'utilise CMake pour construire le code. Il crée un sous-répertoire src/a.out et stocke le fichier de sortie. Jusqu'à présent, je définissais le chemin manuellement si je voulais stocker le fichier créé à un autre endroit, par exemple, comme ceci

std::ofstream ofile;
ofile.open("/home/results/foo.txt");

J'aimerais savoir s'il existe un moyen de définir le chemin dans CMake plutôt que dans le code ?

2voto

Jellyboy Points 94

Une solution consiste à passer le chemin par le biais des arguments du compilateur.

project( test )
cmake_minimum_required( VERSION 3.0 )
add_executable( testparm testparm.cpp )
target_compile_options( testparm PUBLIC -DMYPATH=/tmp/file.txt )

Dans testparm.cpp

#include <fstream>
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
int main() {
        const char* path = TOSTRING(MYPATH);
        std::ofstream file( path );
        file << "Hello World\n";
        return 0;
}

En cours d'exécution :

$ strace ./testparm
...
openat(AT_FDCWD, "/tmp/file.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
write(3, "Hello World\n", 12)           = 12
close(3)                                = 0
exit_group(0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X