2011-07-21 20 views
30

C++ uygulamasında Mongodb istemcisi ve Boost kullanıyorum. Mongodb istemcisi Boost eski dosya sistemini kullanmaya devam ettiğinden ve C++ uygulamamın dosya sistemi sürüm 3'ü 1.47.0 yükseltmesini kullandığı için çakışıyorlar. Makro'nun tanımı cmake'ye nasıl eklenir?

ben bütün cpp dosyalarında Boost dan başlık dosyaları için açıklamalar yer önce yani makro tanımını eklemek, bu derleme sorunu çözmek için bir yol buldu:

#define BOOST_FILESYSTEM_VERSION 2 

Ama koymak nasıl bilmek istiyorum CMOD proje dosyalarına makro tanımının üstünde.

cevap

46

Tanımlarınızı derleyici komut satırınıza ekleyeceğiniz add_definitions'a bakın. Gcc ile -D veya MSVC ile /D. gibi bir şey deneyin: Senin durumunda

add_definitions(-DBOOST_FILESYSTEM_VERSION=2) 

, kesinlikle add_definition yöntemi ile gider, fakat alternatif configure_file bakmak için olabilir. Daha sonra cmake değerleri ile doldurulacak ve bunu kaynak dosyalarınıza dahil edecek bir başlık dosyası şablonu oluşturabilirsiniz. CMake tarafından belirlenen birçok, birçok yapılandırılabilir parametreye sahipseniz, bu yararlı olabilir.

+0

Teşekkürler. = Un eklemeyi unuttum. Şimdi kodlarım temiz görünüyor. –

+0

güzel, benim için yararlı –

+0

Bu, aksi halde derlemeyecek bir C++ 0x projesinin derlenmesine yardımcı oldu. Siz efendim, harika! : D –