2010-12-10 4 views
0

저는 컴파일러와 함께 제공되는 전 처리기 대신에 boost.wave를 전처리기로 사용하려고합니다. 나는 이것을 달성하는 방법을 알아낼 수 없습니다.boost.wave를 cmake를 사용하는 전 처리기로 사용할 수 있습니까?

저는 빌드 시스템 생성기로 CMake를 사용하고 있습니다. 내 전 처리기를 boost.wave로 어떻게 지정할 수 있습니까? 이것은 윈도우 (MSVC)와 리눅스 (gcc) 모두에서 작동해야합니다.

인터넷 검색 및 검색 스택 오버플로 아카이브는 어떤 대답을 양보하지 않았다


컴파일러 것이다 어쨌든 파일 전처리. 따라서 전처리의 두 단계가 여기에 관련되어있는 것처럼 보입니다.

답변

2

이것은 두 단계 프로세스입니다.

먼저 CMake에게 사용자 지정 명령으로 Wave를 사용하도록 지시해야합니다. CMake의 add_custom_command을 사용하십시오. 이 명령을 정의한 후에는 사용자 정의 명령에 지정한 종속성이 일치 할 때마다 호출됩니다.

둘째, 미리 정의 된 모든 매크로와 컴파일러가 사용하는 (시스템) 포함 경로를 찾아야합니다. Wave는 특정 컴파일러에 대해 아무것도 모릅니다. 따라서 특정 컴파일러에 대해 파일을 올바르게 사전 처리하려면 일반적으로 컴파일러에서 미리 정의 된 모든 관련 매크로 및 모든 시스템 포함 경로 (기본적으로 컴파일러에 일반적으로 알려져 있음)를 호출하는 동안 전달해야합니다 웨이브. 웨이브의 명령 행에 모든 옵션을 넣는 것이 너무 지루한 경우 웨이브에 options file을 생성 할 수 있습니다 (명령 행에 @cfgfile으로 추가). 여기에 MSVC 2005 예입니다 : 물론

-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\include 
-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include 
-D_MT 
-D_MSC_VER=1400 
-D_MSC_FULL_VER=140050727 
-D_MSC_EXTENSIONS 
-D_M_IX86 

, 당신은뿐만 아니라 여기에 웨이브에 대한 다른 옵션을 추가 할 수 있습니다. 컴파일러마다 다른 설정 파일을 가지고 있으면 CMake 내부에서 관리하기가 더 쉽습니다.