2015-01-21 4 views
0

다음과 같은 프로젝트 구조가 있습니다. A.dll은 B.exe에 따라 달라지며 B.exe는 사용자 지정 대상 C에 종속됩니다. 사용자 지정 대상 C는 B.exe에서 대상 빌드 빌드 단계로 아카이브에 B.exe 패키지 파일을 생성합니다.
처음 빌드 할 때 A .dll은 B.exe가 빌드되고 post 빌드 단계 인 myArchieve.a가 빌드 된 이후 처음입니다. 그때부터 A.dll을 빌드하면 B.exe는 다시 빌드되지 않습니다. 왜냐하면 실행 파일이고 이전 빌드 때문에 존재하기 때문입니다. 이 문제는 다음과 같습니다.
1. 항상 부실 실행 파일이 있습니다.
2. C를 약간 변경하고 A.dll 빌드를 트리거하면 cmake는 C와 A를 다시 빌드합니다. B를 다시 작성하지 않습니다. .exe 그리고 결과적으로 archieve 단계를 놓 쳤고 나의 archieve는 결코 업데이트되지 않습니다.cmake 실행 파일이 다시 빌드되지 않습니다.

이 문제를 해결할 수 있습니까? 이미 this 링크를 읽었으며 많은 도움이되지 않습니다.

답변

0

설정에 개념적인 문제가 있습니다. 패키징은 빌드 후 단계가 아니어야합니다.

대신 당신은 포장 add_custom_command를 사용하고 B.exe을 구축 대상 및 사용자 정의 대상 C의 출력 파일에 모두 해당 명령 DEPENDS이 있어야합니다.

+0

add_custom_command의 문서에 출력 파일을 원본 파일로 사용하는 대상에 사용자 지정 명령이 규칙으로 명시되어 있기 때문에 이는 작동하지 않습니다. 내 출력 즉, 'myArchieve.a'가 어떤 타겟에 의해 소스로 사용되지 않습니다. 따라서이 사용자 지정 명령은 어떤 대상에도 추가되지 않습니다. – tejas

관련 문제