다른 make 호출에서 이 변경 될 수있는 파일 집합에 따라 파일을 생성하려고합니다.동적으로 생성 된 종속성
은의 당신에게 코드를 보여주지, 더 잘 이해하기 :
cmake_minimum_required(VERSION 2.8)
project(demo-one C)
add_custom_command(
OUTPUT
"${CMAKE_BINARY_DIR}/generated.c"
COMMAND
generate -o "${CMAKE_BINARY_DIR}/generated.c"
DEPENDS
"$(shell generate-dependencies-list)"
COMMENT
"Generating generated.c"
)
add_executable(main main.c "${CMAKE_BINARY_DIR}/generated.c")
그래서, 나는 generate
명령을 사용하여 파일 generated.c
을 생성 할을하고,이 파일은 파일이 generated-dependencies-list
에 의해 지정된 때 재생 될 필요가 명령 변경. 당신이 통지, generated-dependencies-list
는 메이크업 호출에 걸쳐 파일의 다른 세트를 생성 할 수 있습니다함에 따라, 다음 이 add_custom_command
에 결과를 전달하는 구성시 에게 generated-dependencies-list
의 결과를 얻기 위해 가능하지 않습니다.
사실 위의 코드가 어느 정도 작동하지만,이 는 또한 메이크업 규칙이 모든 후, 기대하고있는 무슨으로 을 보이지 않는, 메이크 백엔드에 대한 작동합니다 해킹처럼 보이는, 그것은 해킹는 다음과 같습니다
generated.c: $(shell generate-dependencies-list)
은 CMake 어떤 기능이 달성했습니다 :
generated.c: ../$(shell\ generate-dependencies-list)
는 기본적으로,이 같은 결과를 얻기 위해이 규칙 또는 무언가를 원하는?
음 ... 나는 당신이 이해하지 못했을 것으로 생각합니다. generate-dependencies-list는 generated.c를 빌드하기위한 종속성을 출력하는 명령입니다.이 출력은 make 호출 전체에서 변경 될 수 있습니다 (예 : 새 파일 추가). 이러한 종속성은 generated.c를 생성하는 데 사용되지만 don 필요한 것은 빌드 시스템의 일부가되어야합니다 (그들은 설치되지 않습니다). – eagleoneraptor
@eagleoneraptor'명령의 출력이 때때로 변경 될 수있는 경우'generate-dependencies-list는 의존성을 출력하는 명령입니다' 스크립트 또는 스크립트의 매개 변수가 변경되면 적어도 (최적의 방법으로)이를 수행 할 수 없습니다. 그것이 바로 [file (GLOB ...)] (http://www.cmake.org/cmake/help/v3.0/command/file.html)이 권장되지 않는 이유입니다. 이 경우 모든 빌드 (즉, 모든 make)마다 아무 것도 변경하지 않고이 명령을 실행해야합니다. –