2011-09-28 17 views
7

Quiero construir mis fuentes mediante el compilador Mingw que no está en mi sistema PATH. He intentado esto en el comienzo de mi guión:¿Cómo establecer la variable de entorno PATH en el script CMake?

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

Y esto:

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 primera variante no funciona en absoluto. A sugerir que no puedo sobreescribir el valor de la variable de entorno en el script CMake. El segundo script encuentra mi compilador mingw, pero detecta el error mientras ejecuta gcc (no puede encontrar libgmp-10.dll que necesita por gcc). Esto se debe a que la variable PATH no está configurada en mi Mingw.

Respuesta

1

Escriba un archivo de script para iniciar CMake.

En Windows crea un archivo por lotes:

@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" 

En Linux crea un script bash:

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

puede utilizar setlocal en una secuencia de comandos para deshacer automáticamente el cambio en la ruta cuando el archivo por lotes se cierra (si se desea). También hay variables de entorno 'ProgramFiles (x86)' y 'ProgramFiles' que deberían usarse en lugar de la codificación dura' C: \ Program Files' – doug65536

2

Es posible acercarse a ella como si se tratara de una compilación cruzada cadena de herramientas, incluso si usted no está compilación cruzada desde Linux a Windows como en este ejemplo:

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

Después de seguir la guía que se establece la cadena de herramientas MinGW en la línea de comandos cuando se llama a cmake:

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

continuación, si está usando este mucho se puede crear un alias para limitar a escribir en esa fea -D cada vez que desea volver a generar archivos make:

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

CMAKE_SYSTEM_PROGRAM_PATH no está destinado a ser modificado, utiliza

LIST(APPEND CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" ...) 
Cuestiones relacionadas