2

에서 전 처리기 지시문을 동적으로 추가 VS2008을 사용하고 C/C++ 프로젝트를 개발 중입니다. .bat 파일을 사용하여 명령 줄 (VC2k8 명령 프롬프트)에서 프로젝트를 빌드하고 있습니다. 빌드 할 때 prepross 지시문을 동적으로 포함 할 방법이 필요합니다.명령 줄 빌드 VS2008

저는 devenv를 사용하여 명령 행에서 빌드하고 있습니다.

>devenv my\project\path\myproject.sln /build release > logs\build.log 

실제로 배치 파일의 명령 줄 매개 변수를 기반으로 매크로 정의를 설정하고 싶습니다. 두 개의 다른 .vcproj 파일을 유지할 수 있지만 여러 프로젝트/sln 파일을 유지하는 데 문제가 있습니다. 이 같은 내 배치 파일 무언가가 ...

if (condition) 
#define MYPROC_ENABLE_MYMODULE "yes" // To be included in the project. 
else 
#define MYPROC_ENABLE_MYMODULE "no" 

어떤 도움이 정말 감사하겠습니다.

감사합니다. 실행시의 명령 줄에 CL 환경 변수의 내용을 추가합니다

set CL=/DMYPROC_ENABLE_MYMODULE 

C++ 컴파일러 (cl.exe) :

답변

1

하나의 옵션은 같은 것을 사용하여, the CL environment variable을 설정하는 것입니다.

msbuild을 사용하여 빌드하는 경우 매크로를 정의 할 수 있지만 직접 devenv을 사용할 때 동일한 작업을 수행 할 수 있는지 확신하지 못합니다.

+0

devenv/msbuild는 다시 빌드해야하는지 여부를 결정합니까? 기본 프로젝트 옵션으로 빌드 한 다음 CL을 설정하고 다시 빌드한다고 가정 해보십시오. 전체 프로젝트를 다시 빌드합니까? 아니면 명시 적으로 청소하고 빌드해야합니까? –

+0

@the_mandrill : VCBuild에 익숙한 사람이 대답하는 것이 좋습니다. 내 생각 엔 재건은 올바르게 처리되어야하지만 다시는 확실하지 않다. –

+0

제임스 감사합니다. 나를 위해 잘 작동합니다. – Muthukkumaran

1

솔루션에 대해 다른 구성을 만들고 다른 구성에 대해 서로 다른 전처리 기 플래그를 정의 할 수 있습니다. 그런 다음 명령 줄에서 구성을 선택하면되며 여러 솔루션이나 프로젝트 파일은 필요하지 않습니다.

+0

많은 프로젝트를 동기화 할 필요가없고 많은 종류의 구성이 필요하지 않은 경우이 솔루션이 더 효과적입니다. 그렇지 않으면 제임스의 선택이 더욱 유연 해집니다. –

+0

@the_mandrill 네가 독자적으로 설정할 수있는 다른 깃발을 가지고 있다면 조합 문제에 봉착 할 것이다. 당신은 당신이 사용하기를 원하는 각각의 플래그 조합에 대한 설정 이름을 만들어야 할 것입니다. 그러나 그보다 단순한 것보다 나은 도구 지원이 구성을 더 나은 선택으로 만들 것이라고 생각합니다. – bshields

+0

프로젝트를 올바르게 재구성 할 수 있다는 점에서 이점은 있습니다. 그래서 나는이 방법들 중 하나의 선택이 개별 요구 사항에 달려 있다고 생각합니다. –