2015-01-27 19 views
5

Tôi đang tạo ra một giải pháp studio trực quan bằng cách sử dụng cmake. Và bây giờ tôi muốn tạo tệp pdb cho bản dựng. (Tại sao vì tôi muốn có những biểu tượng trong trường hợp mà người dùng tìm thấy một số lỗi?)cách tạo tệp pdb để xây dựng Bản phát hành với cờ cmake?

tôi đã cố gắng bằng cách thiết lập các cờ sau đây mà không thành công:

set(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "Build Types" FORCE) 

IF(WIN32) 

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Release") 
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/debug /INCREMENTAL") 
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/debug /INCREMENTAL") 
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "/debug /INCREMENTAL") 
set(CMAKE_CXX_FLAGS_RELEASE "/MD /Zi /O2 /Ob1 /D NDEBUG") 
set(CMAKE_C_FLAGS_RELEASE "/MD /Zi /O2 /Ob1 /D NDEBUG") 
ENDIF(WIN32) 

Dường như cmake được bỏ qua những bộ: Xin được cảm ơn trước về sự giúp đỡ!

+0

Bạn có thể xây dựng trên - mà không thành công? Bạn có gặp lỗi, thiếu kết quả hoặc không hoạt động? –

+1

Chỉ cần không hoạt động. Tôi tự hỏi nếu dòng "set (CMAKE_CONFIGURATION_TYPES $ {CMAKE_BUILD_TYPE} CACHE STRING" Build Types "FORCE)" đang ghi đè các cờ –

+0

Tôi đã thử điều này ngoài '' 'add_executable (out a.cpp b.cpp)' '' và khi tôi xây dựng cấu hình Release cũng có một tệp .pdb. Và nó đã được debuggable. Bạn có thể đăng thêm chi tiết không? Và btw không sử dụng '' 'CMAKE_BUILD_TYPE''' khi tạo cho MSVC – onqtam

Trả lời

7

tôi đã sử dụng lá cờ

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") 
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") 

This site giải thích chi tiết

+1

' CMAKE_SHARED_LINKER_FLAGS_RELEASE' là một biến được lưu trữ trên toàn cầu, vì vậy tôi phải thêm 'CACHE STRING" "FORCE'. Ngoài ra, hãy đảm bảo sử dụng các biến 'CMAKE_STATIC_LINKER_FLAGS_RELEASE' và' CMAKE_EXE_LINKER_FLAGS_RELEASE' khi thích hợp. –

Các vấn đề liên quan