Tôi đang bối rối về biến cache CMake của:Confused về ưu tiên thiết lập biến cache CMake của
Trường hợp 1:
CACHE
+FORCE
set(CMAKE_CXX_FLAGS "myflags" CACHE STRING "" FORCE)
- Đầu tiên CMake chạy:
"myflags"
xuất hiện trong tệpCMakeCache.txt
như dự định. - Tùy chọn dòng lệnh: tùy chọn dòng lệnh không ghi đè
"myflags"
- có vẻ nhưFORCE
có mức độ ưu tiên cao hơn dòng lệnh-D...="..."
đối số. Điều này không được mong muốn - Tôi muốn đối số dòng lệnh ghi đè"myflags"
.
- Đầu tiên CMake chạy:
Trường hợp 2: chỉ
CACHE
set(CMAKE_CXX_FLAGS "myflags" CACHE STRING "")
- Đầu tiên CMake chạy: gì xuất hiện trong các tập tin
CMakeCache.txt
. Tôi muốn"myflags"
xuất hiện cho lần chạy đầu tiên. - Tùy chọn dòng lệnh: dòng lệnh có mức độ ưu tiên trên
"myflags"
.
- Đầu tiên CMake chạy: gì xuất hiện trong các tập tin
Tôi thích hợp về kết luận của tôi? Hoặc làm "biến mặc định" chẳng hạn như CMAKE_CXX_FLAGS
hoạt động khác nhau?
Có cách nào để có "myflags"
viết trong file CMakeCache.txt
trong thời gian chạy CMake đầu tiên (khi CMake không chạy trước đó trong thư mục này)?
Tôi muốn đặt "myflags"
trong lần chạy CMake đầu tiên trong bộ nhớ cache, sau đó cho phép người dùng ghi đè bằng cách sử dụng dòng lệnh.
Nếu tôi sử dụng FORCE
, người dùng không thể ghi đè thông qua dòng lệnh.
Nếu tôi không sử dụng FORCE
, "myflags"
không được ghi trong tệp bộ nhớ cache trong lần chạy đầu tiên.
Cảm ơn bạn đã làm rõ. Giờ thì tôi đã hiểu. Một điều nữa: làm thế nào bạn sẽ đề nghị tôi thực hiện hành vi mà tôi mong muốn? (Điền 'CMAKE_CXX_FLAGS' vào lần chạy đầu tiên, sau đó cho phép người dùng ghi đè lên.) Tôi có nên kiểm tra xem biến có trống không và điền vào trường hợp đó? –
Điều gì về việc sử dụng biến số khác nhau cho cờ CXX tùy chỉnh (ví dụ: 'MYFLAGS') và hợp nhất nó SET (CMAKE_CXX_FLAGS" $ {CMAKE_CXX_FLAGS} $ {MYFLAGS} "'? – Peter
Có vẻ như nó hoạt động. –