Как установить переменную среды PATH в скрипте CMake?
Я хочу собрать мои исходники с помощью компилятора Mingw, который не размещен в моей системной переменной PATH. Я попробовал это в начале моего сценария:
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\1.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/" ...)
Вы можете подойти к нему так, как если бы это был набор инструментов для кросс-компиляции, даже если вы не выполняете кросс-компиляцию из 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 каждый раз, когда вы захотите восстановить make-файлы:
alias mingw-cmake='cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake'