2012-06-14 26 views
7

Tôi cố gắng để bao gồm debug/release cờ biên dịch phụ thuộc, chẳng hạn như:cmake phớt lờ CMAKE_BUILD_TYPE = gỡ lỗi

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x -Wall -DUSE_BOOST") 
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") 
set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3") 

tôi có thể tạo thư mục build của tôi với một lệnh như:

cmake -DCMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 

Tuy nhiên nó dường như với phiên bản CMAKE 2.8.7, CMAKE_BUILD_TYPE đang bị bỏ qua. Dường như nó hoạt động hoàn hảo với phiên bản 2.8.4 (trên một máy khác), vì vậy phương pháp này không được chấp nhận hoặc có một số vấn đề khác ở đây?

Zenna

+0

Nó không được chấp nhận. Làm thế nào bạn đánh giá rằng nó đang bị bỏ qua? – Fraser

+0

Không có biểu tượng gỡ lỗi nào trong tệp thực thi và nếu tôi thêm các lệnh xấu, ví dụ: đặt (CMAKE_CXX_FLAGS_DEBUG "$ {CMAKE_CXX_FLAGS_DEBUG} -Có nhiều lệnh xấu"), không có hiệu lực. – zenna

+2

Phải đọc: http://www.cmake.org/pipermail/cmake/2008-September/023808.html – bitek

Trả lời

4

Vấn đề là phải có khoảng cách giữa -D và biến. Tức là, phải là:

cmake -D CMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 
+1

Và đừng quên xác định loại biến. Từ tài liệu CMake, đó là: '-D : = ' –

+5

Tôi đã _never_ phải sử dụng dấu cách sau -D. Bạn có chắc 'CMAKE_CXX_FLAGS_DEBUG' của bạn có chứa' -g' không? Nếu bạn sử dụng lại cùng một thư mục xây dựng, có thể các giá trị không hợp lệ trong bộ nhớ cache biến đã được sử dụng lại. – Mark

+0

Loại bản dựng 'RELEASE' và' Release' có tương đương không? – nn0p

1

Tại sao bạn không sử dụng -DCMAKE_BUILD_TYPE=Debug, khi tạo thư mục xây dựng? Cmake xây dựng dự án loại dự án hoặc dự án loại gỡ lỗi, không phải cả hai cùng nhau.

2

Tôi nghĩ rằng họ đã tạo Typo trong CMAKE_BUILD_TYPE trong phiên bản trước. Chúng tôi đã có biểu tượng này và ở đây một dòng hoạt động.

cmake -D CMAKE_BUILD_TYPE:STRING=Debug ../src 

Bạn có thể kiểm tra xem mỗi thứ diễn ra tốt đẹp sử dụng:

cmake -L ../src 

Sử dụng lệnh này có thể cung cấp cho bạn một cách đúng đắn để đặt tên cho CMAKE_BUILD_TYPE biến.

Chúc may mắn.

5

Bạn có lỗi đánh máy. Mã của bạn cho biết CMAKE_CSS_FLAGS_RELEASE. Chú ý CSS, phải là CXX.