Как установить переменную среды 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'