2011-09-28 2 views
7

Je veux construire mes sources par le compilateur Mingw qui n'est pas placé sur mon système PATH. J'ai essayé au début de mon script:Comment définir la variable d'environnement PATH dans un script CMake?

set(Env{PATH} "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/") 

Et ceci:

set(CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/") 
set(CMAKE_LIBRARY_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/") 
set(CMAKE_SYSTEM_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/") 
set(CMAKE_SYSTEM_PREFIX_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/") 

La première variante ne fonctionne pas du tout. Une suggestion que je ne peux pas écraser la valeur de la variable d'environnement dans le script CMake. Le deuxième script trouve mon compilateur mingw, mais attrape l'erreur lors de l'exécution de gcc (impossible de trouver libgmp-10.dll dont a besoin gcc). C'est parce que la variable PATH n'est pas réglée sur ma Mingw.

Répondre

1

Ecrivez un fichier de script pour démarrer CMake.

Sous Windows faire un fichier batch:

@echo off 
set path=c:\MyProject\Tools\mingw\bin;c:\MyProject\Tools\mingw\msys\1.0\bin 
"C:\Program Files\CMake 2.8\bin\cmake-gui.exe" 

Sur Linux faire un script bash:

export PATH=$PATH:/your/path 
+2

vous pouvez utiliser setlocal dans un script pour annuler automatiquement la modification du chemin lorsque le fichier de commandes se termine (si vous le souhaitez). Il y a aussi des variables d'environnement 'ProgramFiles (x86)' et 'ProgramFiles' qui devraient être utilisés à la place du codage' C: \ Program Files' – doug65536

2

Vous pouvez l'aborder comme si elle était une compilation croisée toolchain, même si vous traversez pas la compilation de Linux à Windows comme dans cet exemple:

http://www.vtk.org/Wiki/CmakeMingw

Après avoir suivi ce guide vous définissez le toolchain mingw à la ligne de commande lorsque vous appelez cMake:

~/src/helloworld/ $ mkdir build 
~/src/helloworld/ $ cd build 
~/src/helloworld/build/ $ cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake 

alors si vous utilisez ce beaucoup que vous pouvez faire un alias pour limiter en tapant ce vilain -D chaque fois que vous voulez régénérer makefiles:

alias mingw-cmake='cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake' 
12

CMAKE_SYSTEM_PROGRAM_PATH ne vise pas à être modifié, utilisez

LIST(APPEND CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" ...) 
Questions connexes