2 개의 라이브러리 프로젝트 (B, C)에 따라 주 프로젝트 (A)가 있습니다.올바르게 외부 프로젝트에 대한 CMAKE 사용자 지정 명령을 설정하는 방법
─A
├──src
├──dep
│ ├─B
│ │ ├──include
│ │ ├──src
│ │ └──CMakeLists.txt[B]
│ └─C
│ ├──include
│ ├──src
│ └──CMakeLists.txt[C]
└──CMakeLists.txt[A]
a의 CMakeLists.txt이 같은 (단축)입니다 :
project(A)
add_subdirectory(dep/B)
include_directories(dep/B/include)
add_subdirectory(dep/C)
include_directories(dep/C/include)
add_executable(A ...src/files...)
target_link_libraries(A B)
target_link_libraries(A C)
B 또는 C 내가의 출력 디렉토리에 복사 출력 디렉토리를 가지고 싶습니다 내장하는 경우 업데이트 된 컴파일 된 라이브러리 (.lib 및 .dll 파일)를 찾을 수 있습니다.
이 내가 (CMakeLists.txt에서 [A])을 사용하여 뭘하려 :
add_custom_command(TARGET B POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
$<TARGET_FILE_DIR:B>
$<TARGET_FILE_DIR:A>)
add_custom_command(TARGET C POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
$<TARGET_FILE_DIR:C>
$<TARGET_FILE_DIR:A>)
그러나 분명히 실행되지 않습니다.
나는이 같은의 PRE_BUILD 단계에 복사를하고 시도 :add_custom_command(TARGET A PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
$<TARGET_FILE_DIR:B>
$<TARGET_FILE_DIR:A>)
add_custom_command(TARGET A PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
$<TARGET_FILE_DIR:C>
$<TARGET_FILE_DIR:A>)
그것은 작동하지만, 내가 무엇 B 또는 C
작업 있어요 때마다 다시 컴파일해야 이것을 구성하는 올바른 방법은 무엇입니까?
B와 C가 DLL 프로젝트입니다. Visual Studio 내에서 예를 들어 B를 편집하고 빌드 할 수 있지만 A의 출력 디렉토리에 새 DLL을 복사해야합니다. 그렇지 않으면 A는 이전 버전을 계속 사용합니다. –