2012-04-10 30 views
10

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

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

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

+1

@ user243655: Dường như tạo nhiều cấu hình: 'Debug',' Release', 'MinSizeRel' và' RelWithDebInfo'. –

+0

Cảm ơn rất nhiều thông tin. – user243655

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