2009-09-03 30 views
6

Tôi muốn đặt biến CMake khác nhau để gỡ lỗi và phát hành bản dựng. Tôi đã cố gắng sử dụng CMAKE_CFG_INTDIR như sau:Biến hoặc thuộc tính CMake để phân biệt gỡ rối betwen và phát hành bản dựng

IF(${CMAKE_CFG_INTDIR} STREQUAL "Debug") 
    SET(TESTRUNNER DllPlugInTesterd_dll) 
ELSE(${CMAKE_CFG_INTDIR} STREQUAL "Debug") 
    SET(TESTRUNNER DllPlugInTester_dll) 
ENDIF(${CMAKE_CFG_INTDIR} STREQUAL "Debug") 

Nhưng biến này đánh giá $ (OUTDIR) tại thời điểm CMake thực hiện điều đó.

Có biến CMake mà tôi có thể sử dụng để phân biệt giữa bản dựng gỡ lỗi và bản phát hành hay thứ gì đó dọc theo dòng TARGET_LINK_LIBRARIES nơi người ta có thể chỉ định gỡ lỗi và thư viện được tối ưu hóa không?

EDIT: Tôi không thể sử dụng CMAKE_BUILD_TYPE vì điều này chỉ được hỗ trợ bởi các trình tạo dựa trên thực hiện và tôi cần làm việc này với Visual Studio.

Trả lời

3

Bạn có thể xác định CMAKE_CFG_INTDIR của riêng bạn

IF(NOT CMAKE_CFG_INTDIR) 
SET(CMAKE_CFG_INTDIR "Release") 
ENDIF(NOT CMAKE_CFG_INTDIR) 

IF(CMAKE_CFG_INTDIR MATCHES "Debug") 

...Debug PART... 

ELSE(CMAKE_CFG_INTDIR MATCHES "Debug") 

...Release PART... 

ENDIF(CMAKE_CFG_INTDIR MATCHES "Debug") 

Sau đó, khi bạn gọi cmake thêm Definition (-D):

cmake -DCMAKE_CFG_INTDIR=Debug /path/of/your/CMakeLists.txt 

Đối với các mục tiêu, bạn có hai giải pháp:

Đầu tiên:

IF(CMAKE_CFG_INTDIR MATCHES "Debug") 

TARGET_LINK_LIBRARIES(YOUR_EXE DllPlugInTesterd...) 

ELSE(CMAKE_CFG_INTDIR MATCHES "Debug") 

TARGET_LINK_LIBRARIES(YOUR_EXE DllPlugInTester...) 

ENDIF(CMAKE_CFG_INTDIR MATCHES "Debug") 

Second một:

IF(CMAKE_CFG_INTDIR MATCHES "Debug") 

FIND_LIBRARY(DLL_PLUGIN DllPlugInTesterd_dll /path/of/your/lib) 

ELSE(CMAKE_CFG_INTDIR MATCHES "Debug") 

FIND_LIBRARY(DLL_PLUGIN PlugInTester_dll /path/of/your/lib) 

ENDIF(CMAKE_CFG_INTDIR MATCHES "Debug") 

Sau đó cho liên kết

TARGET_LINK_LIBRARIES(YOUR_EXE ${DLL_PLUGIN}...) 
3

Cố gắng sử dụng CMAKE_BUILD_TYPE thay

+1

Theo tài liệu CMake biến này chỉ có sẵn cho máy phát điện dựa làm. Tôi cần phải làm việc này cho cả studio tạo và visual. – Torleif

+1

cho Visual Studio 2005 (và tôi khá chắc chắn năm 2003) Nó sử dụng tùy chọn VS Build kiểu gốc, và điền nó với Debug, RelWithDeb, Release, v.v. thông thường, vì vậy không cần phải tự tạo. Chỉ cần sử dụng những gì đã có sẵn trong cmake. –

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