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.
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