config
소스 파일 옆 의 디렉토리에 일부 구성 파일 (xml, ini, ...)이 있습니다. 프로젝트를 만들 때마다 config 디렉터리의 모든 파일을 실행 파일 옆의 빌드 디렉터리에 복사하려면 어떻게해야합니까?
답변:
사용할 수 있습니다 add_custom_command
.
목표가라고 말하면 MyTarget
다음과 같이 할 수 있습니다.
add_custom_command(TARGET MyTarget PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/config/ $<TARGET_FILE_DIR:MyTarget>)
이것은 MyTarget
"/ config"의 내용 을 빌드 하고 대상 exe / lib가 끝날 디렉토리에 복사 할 때마다 실행됩니다 .
으로 마크 Lakata는 대체 아래 댓글에서 지적 PRE_BUILD
과 POST_BUILD
에 add_custom_command
빌드가 성공하면 복사 만 일어날 것을 보장한다.
${CMAKE_COMMAND}
CMake의 경로입니다.-E
CMake가 빌드하는 대신 명령을 실행하게합니다.copy_directory
A는 명령 줄 도구config
콘텐츠가 빌드 대상에 복사 될 디렉토리 (프로젝트의 루트 아래에 있음)입니다.$<TARGET_FILE_DIR:MyTarget>
A는 생성 식 에 설명, add_custom_command
문서.make
실행조차하지 않을만큼 영리 하다고 생각 make MyTarget
합니다. 대상에서 변경 사항이 있으면 해당 대상에서 make가 실행되고 파일이 복사됩니다.
make clean
프로젝트가 정리 될 때 복사 된 파일을 삭제해야한다는 것을 알 수있는 방법이 있습니까?
CMake는 셸 유형 파일 복사를 지원합니다. 이 링크가 도움이 될 것입니다. 소스 트리에서 바이너리 트리로 디렉토리를 복사하는 방법은 무엇입니까?
내 프로젝트에서 INSTALL을 사용하여 CMake에 지정하고 conf 파일로 바이너리를 어디로 이동합니다. cmake 실행 후 "make install"을 사용하십시오.
install()
명령을 사용 하지만 이것은 코드가 빌드되고 단위 테스트를 통과하며 다른 사람들이 어느 정도 사용할 준비가 된 특수한 경우입니다. 나는 그것을 디버그하기 위해 설치하지 않습니다.
add_executable
또는을 통해 추가 된 항목add_library
입니다.