Microsoft Build.exe를 원격 디렉토리의 소스를 포함시킬 수 있습니까?

StackOverflow https://stackoverflow.com/questions/411841

  •  03-07-2019
  •  | 
  •  

문제

하나 이상의 디렉토리를 소스 파일로 추가하여 (예 : ../../source.cpp 또는 ../..../some_else/source.cpp, vs. source.cpp 또는 ../source.cpp) to 소스 = WDK/DDK 빌드의 선언은 다음 오류를 산출합니다.

Ignoring invalid directory prefix in SOURCES= entry

빌드에 원격 소스 파일을 포함시킬 수 있습니까?

도움이 되었습니까?

해결책

이것을 직접 할 수는 없습니다. build 동일 또는 상위 디렉토리에서 소스 코드를 다루기 위해서만 명시 적으로 설계되었습니다. sources 파일. 임의의 위치에서 소스 파일을 사용할 수 없습니다. 특히, 의존성 추적 시스템은 원격 파일을 구문 분석하고 추적 할 수없는 것으로 보이므로 모든 파일이 로컬로 명시 적으로 확인하고 시행합니다.

두 가지 일반적인 솔루션이 있습니다.

  1. 별도의 LIB로 원격 코드를 구축하십시오 (다른 하위 프로젝트/디렉토리를 통해 동일하게 build 프로젝트 또는 독립 빌드 단계 사용).

  2. 각 원격 소스 파일에 대해 로컬 스텁을 배치합니다. #include "../../remote_source.cpp, 이 로컬 스텁을 추가하십시오 SOURCES= 대신 목록. 이것은 효과가 있지만 build/nmake ~ 할 것이다 ~ 아니다 의존성을 추적합니다 remote_source.cpp. 만약에 remote_source.cpp 변경, 당신도해야합니다 touch 로컬 프록시 소스 또는 그렇지 않으면 강제 재 구축 (로컬 프록시 OBJ 삭제, 실행 build ~와 함께 -cZ, 또는 그렇지 않으면).

다른 팁

대체 방법은 소스를 사용 하여이 파일을 포함시키는 것입니다.

매우 오래된 주제를 부활시키는 것을 싫어하지만, 나는 이것에 대해서도 달려 갔다.

대체 대체 방법은 원격 소스의 객체 파일 만 빌드하는 내부에 다른 소스 파일을 작성하는 것입니다. 어딘가에 소스, 동일한 중간 디렉토리를 제공하십시오.

그런 다음 원래 디렉토리에 'Dirs'파일을 추가하고 해당 원격 폴더를 내부에 지정하십시오. 그런 다음 원래 소스 파일에 이와 같은 것을 추가하여 객체 파일에 직접 연결하십시오.

$(TARGETLIBS) = $(PROJECT_OBJ_ROOT)\$(O)\source.obj

이런 식으로, 당신은 lib로 컴파일 할 필요는 없지만, 빌드는 의존성 검사 또는 위치 관리없이 하나와 링크처럼 취급합니다.

당연히 동일한 중간 디렉토리와 동일한 원본 소스 파일 이름 (source.cpp)을 제공하면 몇 가지 문제가 발생할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top