programing

cmake에서 매크로의 정의를 추가하려면 어떻게 해야 합니까?

stoneblock 2023. 5. 19. 23:56

cmake에서 매크로의 정의를 추가하려면 어떻게 해야 합니까?

저는 C++ 애플리케이션에서 Mongodb 클라이언트와 Boost를 사용하고 있습니다.Mongodb 클라이언트는 여전히 Boost old file system을 사용하고 있고 내 C++ 애플리케이션은 boost 1.47.0에서 파일 시스템 버전 3을 사용하고 있기 때문에 충돌합니다.

이 컴파일 문제를 해결하는 방법을 찾았습니다. 즉, boost의 헤더 파일에 대한 모든 include 문 앞에 매크로 정의를 추가합니다.

#define BOOST_FILESYSTEM_VERSION 2

하지만 위 매크로의 정의를 내 CMake 프로젝트 파일에 어떻게 넣는지 알고 싶습니다.

add_definitions를 보면 컴파일러 명령줄에 정의가 추가됩니다.-Dgcc와 함께, 또는/DMSVC와 함께.다음과 같은 방법을 사용해 보십시오.

add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )

당신의 경우라면, 저는 분명히 그와 함께 갈 것입니다.add_definitionmethod. 대신 configure_file을 살펴볼 수도 있습니다.그런 다음 cmake-values로 채워진 헤더 파일 템플릿을 만들고 이 템플릿을 원본 파일에 포함시킬 수 있습니다.이 기능은 CMake에 의해 결정되는 구성 가능한 매개 변수가 많은 경우 유용합니다.

CMake 3 이후에는 특정 대상에 대한 정의만 설정할 target_compile_definitions가 있습니다.

예:

target_compile_definitions(your_target_name PUBLIC BOOST_FILESYSTEM_VERSION=2)

언급URL : https://stackoverflow.com/questions/6770834/how-to-add-macros-definition-in-cmake