2011-09-28 139 views
7

我想通過未放置在我的系統PATH中的Mingw編譯器構建我的源代碼。 我在腳本開始嘗試這樣做:如何在CMake腳本中設置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時發現錯誤(無法找到gcc需要的libgmp-10.dll)。這是因爲PATH變量沒有設置給我的Mingw。

回答

1

寫一個腳本文件來啓動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 
+2

可以使用setlocal在腳本中自動撤消批處理文件退出時的更改(如果需要)。還有一些環境變量'ProgramFiles(x86)'和'ProgramFiles',應該用來代替硬編碼「C:\ Program Files」 – doug65536

2

,好像它是一個交叉編譯工具鏈,即使你不從交叉編譯的Linux到Windows在這個例子中你可能會接近它:

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

你按照你設置指南後

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

然後如果你想利用這個一大堆,你可以讓一個別名要重新生成的makefile每次限制打字那個醜陋的-D:調用cmake的時候在命令行MinGW的工具鏈

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

CMAKE_SYSTEM_PROGRAM_PATH並不意味着被修改,使用

LIST(APPEND CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" ...) 
相關問題