CMake: требуется сборка файлов в дополнение к созданию целей - PullRequest
0 голосов
/ 26 апреля 2020

В этом простом CMakefile первый скрипт list.sh выводит список из 2 сгенерированных файлов file1.proto;file2.proto, инструктируя CMake, что их можно построить из источника source.xml (используя второй скрипт gen.sh).

cmake_minimum_required(VERSION 3.13)

set(source "source.xml")

execute_process(
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/list.sh ${source}
  OUTPUT_VARIABLE protos
)
message("${protos}: ${source}")
add_custom_command(
  OUTPUT ${protos}
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/gen.sh ${source}
  DEPENDS ${source}
)
add_custom_target(my_target DEPENDS ${protos})

Все работает хорошо, если я запускаю:

$ cmake ..
file1.proto;file2.proto: source.xml
-- Configuring done
-- Generating done
-- Build files have been written to: /build

$ make my_target
[100%] Generating file1.proto, file2.proto
[100%] Built target my_target

Что я должен добавить, чтобы можно было также запускать генерацию кода с помощью:

$ make file1.proto

[ EDIT] autocomplete предлагает только следующее для команды make:

$ make  (TAB TAB)
all                       cmake_force               edit_cache/               preinstall                
clean                     default_target            help                      preinstall/               
clean/                    depend                    my_target                 rebuild_cache             
cmake_check_build_system  edit_cache                my_target/                rebuild_cache/  
...