tôi vừa chuyển một vài dự án từ autotools sang cmake.cmake - nhận các cờ dòng lệnh được sử dụng "-D"
một điều phổ biến tôi thích trên autotools là - nếu tôi đi vào thư mục xây dựng src. có config.log/config.status - nơi ở trên cùng lệnh ./configure --params
được liệt kê - vì vậy rất dễ dàng chạy lại các cờ dòng lệnh cũ đã sử dụng.
(như sau khi biên soạn một số nội dung - tôi muốn thêm một khác --enable-this
- vì vậy copy & dán từ config.log/trạng thái - và chạy lại ./configure --old-params --enable-this
)
trong cmake - tôi có một loạt các -D
cờ - làm thế nào tôi có thể tìm thấy các dòng lệnh được sử dụng như trong config.log/status - với một dự án cmake?
tôi biết đó là CMakeCache ... - nhưng nó khó có thể lấy những lá cờ sử dụng
chỉnh sửa:
tôi đã đưa ra các giải pháp sau đây:
#save commandline to rebuild this :)
set(USED_CMD_LINE "cmake ")
set(MY_CMAKE_FLAGS CMAKE_BUILD_TYPE CMAKE_INSTALL_PREFIX ENABLE_SSL ENABLE_LUA ENABLE_SSH ENABLE_SNMP MYSQL_USER MYSQL_PASS MYSQL_HOST MYSQL_DB FULL_FEATURES USE_COVERAGE)
FOREACH(cmd_line_loop IN ITEMS ${MY_CMAKE_FLAGS})
if(${cmd_line_loop})
STRING(CONCAT USED_CMD_LINE ${USED_CMD_LINE} "-D" ${cmd_line_loop} "=" ${${cmd_line_loop}} " ")
endif()
ENDFOREACH(cmd_line_loop)
STRING(CONCAT USED_CMD_LINE ${USED_CMD_LINE} " .. ")
#store to a file aka "config.status"
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/config.status ${USED_CMD_LINE})
tạo tập tin config.status trong thư mục build - chứa tất cả các tham số cmake được thiết lập.
pro:
- dường như để giải quyết vấn đề của tôi
- dường như làm việc trên cmake tiếp theo gọi
con:
- không thể thiết lập chmod trên
FILE(write
? biến MY_CMAKE_FLAGS
chứa cờ biết - cần phải được tự cập nhật nếu một lá cờ mới được thêm vào
liên quan
Đây là một câu hỏi tuyệt vời - một trong đó tôi đã có cho một vài năm nhưng chưa hỏi trên StackOverflow. Tôi không nghĩ rằng có một cách để có được bộ cờ -D được sử dụng khi gọi cmake. Câu trả lời sakra đưa ra dưới đây cho thấy làm thế nào để có được xem các lệnh chính xác là kết quả của lời gọi cmake, nhưng điều đó không cung cấp cho bạn các args được sử dụng cho lệnh cấu hình cmake. Câu trả lời đúng là khó hơn người ta có thể mong đợi vì người dùng có thể liên tục cấu hình lại một thư mục build cmake bằng cách sử dụng 'cmake -Danotherflag = value''. – Phil
thats sad! trong thực tế tôi thực sự yêu cmake, nó giải quyết như 3.5mio vấn đề (tôi học để sống với) từ autotools - nhưng thiếu nhận được người dùng cung cấp cờ commandline, thực sự là xấu. –
xem câu hỏi đã chỉnh sửa của tôi - nó tối ưu cho tôi giải quyết vấn đề của tôi (theo cách không hoàn hảo) –