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