Có vẻ như chúng ta cần tạo một thư mục riêng biệt cho mỗi kiểu xây dựng (debug/release), chạy cmake trên mỗi và tạo ra makefile riêng cho cấu hình debug/release. Có thể tạo một makefile đơn bằng cmake hỗ trợ cả cấu hình debug/release cùng một lúc và khi chúng ta thực sự chạy "make" để tạo các thư mục riêng biệt cho các sản phẩm trung gian và cuối cùng (như dlls, exe).Cmake có thể tạo ra một makefile duy nhất hỗ trợ cả debug và release
10
A
Trả lời
8
Theo như tôi biết, điều này không thể đạt được bằng cách sử dụng một tập hợp các tập lệnh xây dựng duy nhất. Tuy nhiên, những gì bạn có thể làm là có hai thư mục con của khu vực làm việc của bạn:
build/
build/debug
build/release
Sau đó làm:
$ cd build
$
$ cd build/debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ../..
$ make
$
$ cd ../release
$ cmake -DCMAKE_BUILD_TYPE=Release ../..
$ make
Nếu cần, bạn có thể thêm một xây dựng kịch bản trong thư mục build
như vậy:
#!/bin/sh
cd debug && make && cd ..
cd release && make && cd ..
1
Điều này có thể đạt được bằng cách sử dụng lệnh ADD_CUSTOM_TARGET
. Ví dụ, nếu bạn muốn thêm cả debug và mục tiêu phát hành trong makefile của bạn, thêm dòng sau vào tập tin CMakeLists.txt của bạn:
ADD_CUSTOM_TARGET(debug
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Creating the executable in the debug mode.")
ADD_CUSTOM_TARGET(release
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Creating the executable in the release mode.")
Sau đó, sau khi cấu hình với cmake, bạn có thể chạy make debug
để làm cho mục tiêu debug và chạy make release
để làm cho mục tiêu phát hành trong cùng một thư mục.
Các vấn đề liên quan
- 1. CMake có hỗ trợ Python3 không?
- 2. thêm hỗ trợ C++ 0x vào cmake
- 3. Mô-đun CMake cho hỗ trợ gettext?
- 4. nhấp chuột duy nhất để nhận xText editor hỗ trợ
- 5. Có thể thêm các lệnh sau khi cài đặt vào Makefile cấp cao nhất được tạo bởi cmake không?
- 6. Msbuild có nhận ra bất kỳ cấu hình xây dựng nào khác ngoài DEBUG | RELEASE
- 7. Có thể đăng ký người trợ giúp cho một mẫu bảng điều khiển duy nhất không?
- 8. Có một thuật toán để tạo ra tất cả các hoán vị tròn duy nhất của một multiset?
- 9. BSD Tạo và GNU Tạo một makefile tương thích
- 10. Makefile tương đương trong CMake
- 11. autoconf không tạo ra makefile?
- 12. lập trình phát hiện chế độ Release/Debug (NET)
- 13. Tạo một id duy nhất
- 14. GNU Make. Các biến có phạm vi giới hạn đối với một Makefile duy nhất
- 15. Trình biên dịch .NET - DEBUG so với RELEASE
- 16. Xcode/iOS: Cách xác định xem mã có đang chạy trong DEBUG/RELEASE build không?
- 17. Tạo tất cả các hoán vị cặp duy nhất
- 18. Tạo một makefile FORFAN
- 19. Tạo ID duy nhất cho một máy tính cụ thể
- 20. Cassandra: Tạo một ID duy nhất?
- 21. Máy tạo Xcode cmake tạo ra một dự án không thể xây dựng
- 22. Tạo ID duy nhất
- 23. CMake có thể tạo tệp cấu hình không?
- 24. Làm thế nào tôi có thể nhận được hỗ trợ trình biên dịch .less trong Visual Studio 2012 Release 2?
- 25. Tạo khóa duy nhất
- 26. Tạo một ID duy nhất trong PHP
- 27. Mọi trình duyệt có hỗ trợ tất cả unicode không?
- 28. Làm thế nào để hỗ trợ cả HTML4 và HTML5?
- 29. Cách bật cả hỗ trợ CORS và xác thực NTLM
- 30. (Làm cách nào) Tôi có thể thực thi một tệp .cmake duy nhất trên các cửa sổ không?
về tệp sln studio trực quan, nó cũng chỉ tạo ra gỡ lỗi hoặc chỉ phát hành cấu hình hoặc hỗ trợ cả tệp trong cùng một tệp .sln? – user243655
@ user243655: Dường như tạo nhiều cấu hình: 'Debug',' Release', 'MinSizeRel' và' RelWithDebInfo'. –
Cảm ơn rất nhiều thông tin. – user243655