2011-09-28 48 views
7

Tôi muốn xây dựng nguồn của mình bằng trình biên dịch Mingw mà không được đặt trên hệ thống PATH của tôi. Tôi cố gắng này trong phần đầu của kịch bản của tôi:Làm thế nào để thiết lập biến môi trường PATH trong kịch bản CMake?

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

Và đây:

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

Biến thể đầu tiên không làm việc ở tất cả. Một gợi ý rằng tôi không thể ghi đè lên giá trị của biến môi trường trong kịch bản lệnh CMake. Tập lệnh thứ hai tìm trình biên dịch mingw của tôi, nhưng bắt lỗi trong khi chạy gcc (không thể tìm thấy libgmp-10.dll cần theo gcc). Điều này là do biến PATH không được đặt thành Mingw của tôi.

Trả lời

1

Viết tệp kịch bản để khởi động CMake.

Trên Windows tạo ra một tập tin thực thi:

@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" 

Trên Linux tạo ra một kịch bản bash:

export PATH=$PATH:/your/path 
+2

bạn có thể sử dụng setlocal trong một kịch bản để tự động hoàn tác thay đổi đường dẫn khi các tập tin batch thoát (nếu muốn). Cũng có các biến môi trường 'ProgramFiles (x86)' và 'ProgramFiles' nên được sử dụng thay vì mã hóa cứng' C: \ Program Files' – doug65536

2

Bạn có thể tiếp cận nó như thể nó là một chéo biên soạn toolchain, ngay cả khi bạn không vượt biên soạn từ Linux sang Windows như trong ví dụ này:

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

Sau khi bạn làm theo hướng dẫn mà bạn thiết lập toolchain mingw tại dòng lệnh khi gọi cmake:

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

sau đó nếu bạn đang sử dụng này một toàn bộ rất nhiều bạn có thể làm một bí danh để hạn chế gõ vào đó -D xấu xí mỗi khi bạn muốn tạo lại makefiles:

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

CMAKE_SYSTEM_PROGRAM_PATH không có nghĩa là phải được sửa đổi, sử dụng

LIST(APPEND CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" ...) 
Các vấn đề liên quan