Tôi biết cách truy xuất biến môi trường rộng máy bình thường trong CMAKE bằng cách sử dụng
$ENV{EnvironmentVariableName}
nhưng tôi không thể truy xuất biến môi trường cụ thể của người dùng. Nó có thể và làm thế nào?
Tôi biết cách truy xuất biến môi trường rộng máy bình thường trong CMAKE bằng cách sử dụng
$ENV{EnvironmentVariableName}
nhưng tôi không thể truy xuất biến môi trường cụ thể của người dùng. Nó có thể và làm thế nào?
Câu trả lời:
Bạn có thể chuyển một biến trên dòng với lời gọi cmake:
FOO=1 cmake
hoặc bằng cách xuất một biến trong BASH:
export FOO=1
Sau đó, bạn có thể chọn nó trong một kịch bản cmake bằng cách sử dụng:
$ENV{FOO}
Bạn cũng có thể gọi cmake để thực hiện điều này theo cách đa nền tảng:
cmake -E env EnvironmentVariableName="Hello World" cmake ..
env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...
Chạy lệnh trong môi trường đã sửa đổi.
Chỉ cần lưu ý rằng điều này có thể chỉ hoạt động trong lần đầu tiên. Nếu CMake cấu hình lại với một trong các bản dựng liên tiếp (bạn chỉ cần gọi ví dụ: make
một bản CMakeLists.txt
đã được thay đổi và CMake chạy lại quá trình tạo), biến môi trường do người dùng xác định có thể không còn ở đó nữa (so với các biến môi trường trên toàn hệ thống).
Vì vậy, tôi chuyển những biến môi trường do người dùng xác định trong các dự án của mình thành một biến được lưu trong bộ nhớ cache CMake:
cmake_minimum_required(VERSION 2.6)
project(PrintEnv NONE)
if (NOT "$ENV{EnvironmentVariableName}" STREQUAL "")
set(EnvironmentVariableName "$ENV{EnvironmentVariableName}" CACHE INTERNAL "Copied from environment variable")
endif()
message("EnvironmentVariableName = ${EnvironmentVariableName}")
Tài liệu tham khảo
Bạn cần xuất các biến của mình. Ví dụ trong Linux:
export EnvironmentVariableName=foo
Các biến chưa được báo cáo trống trong CMAKE.
IF($ENV{COVERAGE}) ... END()
, invocation : COVERAGE=1 cmake ..
. Được, tôi không kiểm tra nội dung và tôi không biết nó có được không. Nhưng nó chắc chắn hoạt động để kiểm tra nếu nó được xác định hay không!
Các biến môi trường (mà bạn sửa đổi bằng cách sử dụng Thuộc tính hệ thống) chỉ được truyền tới các trang con khi bạn tạo một vỏ con mới.
Nếu bạn có một dấu nhắc dòng lệnh (DOS hoặc cygwin) mở khi bạn thay đổi User env vars, thì chúng sẽ không hiển thị.
Bạn cần mở lời nhắc dòng lệnh mới sau khi thay đổi cài đặt người dùng.
Tương tự trong Unix / Linux là thêm một dòng vào .bash_rc của bạn: bạn cần bắt đầu một trình bao mới để nhận các giá trị.
SET var_name=var_value
để đặt biến môi trường trong phiên DOS hiện tại hoặc SETX var_name var_value
để đặt nó vĩnh viễn: xem set và setx . thiết lập địa phương cũng có thể là thú vị.
source ~/.bashrc
để chạy lại .bashrc
tệp đã sửa đổi và nhận các giá trị mới vào phiên hiện tại của mình.