2011-07-21 6 views
30

Używam klienta Mongodb i Boost w mojej aplikacji C++. Ponieważ klient Mongodb nadal używa Boost stary system plików, a moja aplikacja C++ używa systemu plików 3 z boost 1.47.0, są one w konflikcie.Jak dodać definicję makra w cmake?

znalazłem sposób na rozwiązanie tego problemu kompilacji, a mianowicie dodać makro definicję przed wszystkim zawierać oświadczenia dla plików Główka impuls w moich plikach cpp:

#define BOOST_FILESYSTEM_VERSION 2 

Ale chcę wiedzieć, jak umieścić powyżej definicji makra do moich plików projektu CMake.

Odpowiedz

46

Spójrz na add_definitions, który doda twoje definicje do wiersza poleceń kompilatora, np. -D z gcc lub /D z MSVC. Spróbuj czegoś takiego:

add_definitions(-DBOOST_FILESYSTEM_VERSION=2) 

w danym przypadku, na pewno tam metodą add_definition, ale alternatywą może spojrzeć na configure_file. Następnie możesz utworzyć szablon pliku nagłówkowego, który zostanie wypełniony wartościami cmake i uwzględni to w plikach źródłowych. Może to być przydatne, jeśli masz wiele, wiele konfigurowalnych parametrów, które są określone przez CMake.

+0

Dzięki. Zapomniałem dodać =. Teraz moje kody wyglądają na czyste. –

+0

miło, pożytecznie dla mnie –

+0

Pomogło to skompilować projekt C++ 0x, który w przeciwnym razie nie zostałby skompilowany. Sir, jest niesamowity! : D –