2011-03-23 16 views
17

Geçerli derleyici tanımları kümesinin CMake dosyasında ne olduğunu görmek istiyorum. Ones otomatik olarak belirtildi ve eklediklerim harika olurdu. COMPILE_DEFINITIONS makrosunun içerdiği görünmüyor - dokümantasyonun söylediklerine rağmen.cmake add_definitions ve COMPILE_DEFINITIONS, bunların nasıl göründüğü

Örneğin, aşağıda kurulumunda mesajı asla ben son şekilleriyle onları görmek gerekmez GUI_BUILD

add_definitions(-DGUI_BUILD) 
message("COMPILE_DEFINITIONS = ${COMPILE_DEFINITIONS}") 

, sadece her şeyin doğrulamasına yardımcı olmak için hızlı bir çıkış yapılandırıldı istiyorum içerir doğru şekilde.

cevap

21

COMPILE_DEFINITIONS özelliğini directory'dan ayıklamak istiyorsunuz. Örneğin. Aşağıdaki kullanın:

add_definitions(-DDebug) 
get_directory_property(DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS) 

Sonra sadece .: üzerlerine tanımları da targets veya yerine dizinleri source-files ile ilişkili olabileceğini

foreach(d ${DirDefs}) 
    message(STATUS "Found Define: " ${d}) 
endforeach() 
message(STATUS "DirDefs: " ${DirDefs}) 

Not örn yineleme yapabilirsiniz. Ve yapılandırmalar arasında farklılık gösterebileceğini unutmayın. Gereksinimlerinize bağlı olarak, büyük bir farklı özellikler kümesini kontrol etmeniz gerekebilir.

+4

Teşekkür ederiz. Sadece get_directory_property (DirDefs COMPILE_DEFINITIONS) 've' mesajını ("COMPILE_DEFINITIONS = $ {DirDefs}") yapmamı istiyorum. –

+0

Çalıştığını duymak harika. Onlarla ne yapmak istediğinden emin değildim, bu yüzden küçük liste baskısını ve hedef ve kaynak özellikleriyle ilgili notları ekledim. –

+0

Bir başka yorum, hata ayıklama için ihtiyacınız varsa ve gcc-derleyicisini kullanıyorsunuz: cmake, linker ve derleyici için komut satırı seçeneklerini tutan bir link.txt ve flags.txt oluşturacaktır. Bunları da kontrol edebilirsin. –