Как установить переменную среды PATH в скрипте CMake?

Я хочу построить свои источники компилятором Mingw, который не помещен на мой системный путь. Я попробовал это в начале моего сценария:

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

и так:

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/")

первый вариант не работает вообще. Предположим, что я не могу перезаписать значение переменной среды в сценарии CMake. Второй скрипт находит мой компилятор mingw, но ловит ошибку при запуске gcc (не удается найти libgmp-10.dll, которая нуждается в gcc). Это связано с тем, что переменная PATH не настроен на мой Mingw.

3 ответов


напишите файл сценария для запуска CMake.

в Windows создайте пакетный файл:

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

в Linux сделайте скрипт bash:

export PATH=$PATH:/your/path

CMAKE_SYSTEM_PROGRAM_PATH не предназначен для изменения, используйте

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

вы можете подойти к нему, как если бы это была перекрестная компиляция toolchain, даже если вы не перекрестная компиляция из Linux в Windows, как в этом примере:

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

после выполнения этого руководства вы устанавливаете цепочку инструментов mingw в командной строке при вызове cmake:

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

тогда, если вы используете это много, вы можете сделать псевдоним, чтобы ограничить ввод этого уродливого-D каждый раз, когда вы хотите регенерировать файлы Makefile:

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