Добрый день.
В корне проекта есть каталог config. В нем есть файл config.h.in. Это шаблон конфигурационного файла на основе которого при сборке через механизм cmake configure_file() генерируется файл config.h который будет подключаться в исходниках целей через директиву
// Здесь не указываются пути, только имя файла
#include "config.h"
Также в каталоге config есть файл CMakeLists.txt следующего содержания:
add_library(config config.h.in)
set_target_properties(config PROPERTIES LINKER_LANGUAGE CXX)
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
configure_file(config.h.in config.h)
Без второй строки получаю ошибку:
CMake Error: Cannot determine link language for target "config".
CMake Error: CMake can not determine linker language for target: config
Данный файл подключается в корневом файле CMakeLists.txt через команду
add_subdirectory("config"
Также есть подкаталог program со своим CMakeLists.txt который подключается в корневом CMakeLists.txt также через команду add_subdirectory(). Вот содержимое CMakeLists.txt из подкаталога program:
add_executable(program main.cpp)
target_link_libraries(program library0 library1 config)
В данном случае я добавил config в команду target_link_libraries() для того, чтобы добавить к текущей цели каталоги с заголовочными файлами из цели config.
Вопрос: правильная ли это архитектура? Или добавить путь к конфигурационному файлу удобнее иначе? Например через команду cmake add_custom_target (через нее у меня не получилось, но возможно я делал это как-то не корректно)?