2010-02-05 15 views

cevap

70

kullanıyorum belirtmeliyiz:

target_link_libraries(<target> [lib1 [lib2 [...]]] [[debug|optimized|general] <lib>] ...) 

Bir "ayıklama", "optimize" veya "genel" kelime olduğunu gösterir kütüphane hemen sadece yapılandırması oluşturmak için karşılık gelen kullanılacaksa aşağıdaki .

Yani bunu yapmak mümkün olmalıdır:

add_executable(MyEXE ${SOURCES}) 

target_link_libraries(MyEXE debug 3PDebugLib) 
target_link_libraries(MyEXE optimized 3PReleaseLib) 
+12

Ben bir satırda daha kompakt, bu hep yapıyor: target_link_libraries (MyEXE ayıklama 3PDebugLib 3PReleaseLib optimize edilmiş) –

+8

kütüphane adının aynı ne olur, ancak görsel stüdyo farklı bir yolda bunun için bakmak istiyorum ? i.e. mylib.lib'yi bağlamak istiyorum ancak bunun iki sürümü var. /path/Debug/mylib.lib ve /path/Release/mylib.lib altında bir tane (genellikle bazı kitaplıklarda olduğu gibi). O zaman ne yapacaksın? – Jubei

+1

@Jubei 2 değişken tanımlayın. Her kütüphane için bir tane. – Qsiris

4

nasılsa @ Mike Willekes gelen cevap CKağıt benim için aynı hedefe bırakma ve ayıklama hem de bağlama :(

var

: bağlanabilir gerektiğini ve her kütüphane için bunu yaparken - sadece @sakra in a related question önerdiği gibi, tek satırda her iki yapılandırmaları ayarlayarak bu çalışma var
+0

Ah hata ayıklama hangi algılar DEBUG_CONFIGURATIONS özelliği hatırlıyorum –

+0

: Sonunda aşağıdaki gibi bir şey kullanarak etrafında çalıştı Dezavantajı @SteveLorimer, çoklu yapılandırma jeneratörlerinde - Visual Studio'da olduğu gibi - bu, zaman üretilirken işe yaramaz. – Tarc

+0

Anladığımdan emin değil miyim? Tcmalloc'u hata ayıklama yapılarına bağlamıyoruz. Tcmalloc'u sürüm yapılarında bağlarız. Yani, tcmalloc'un bir hata ayıklama sürümü yoktur, bu yüzden onu optimize ederek yalnızca sonuç olarak hata ayıklamalarına bağlanır. –

İlgili konular