Расширение переменной, #cmakedefine и выражения генератора в файле шаблона - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть следующий шаблон

config.c.in

#define QPID_DISPATCH_VERSION "${QPID_DISPATCH_VERSION}"
#define QPID_DISPATCH_LIB "$<TARGET_FILE_NAME:qpid-dispatch>"
#cmakedefine01 USE_MEMORY_POOL

И я хочу получить следующее, развернув переменную #cmakedefine и выражение генератора.

config.c

#define QPID_DISPATCH_VERSION "1.6.0-SNAPSHOT"
#define QPID_DISPATCH_LIB "libqpid-dispatch.so"
#define USE_MEMORY_POOL 1

Проблема в том, что, похоже, нет функции CMake, которая может расширять все три.

Что я могу сделать, это

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h.tmp)
file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/config.h INPUT ${CMAKE_CURRENT_BINARY_DIR}/config.h.tmp)

Есть ли способ сделать это без создания временного файла?Очистить файл сложно, потому что файл GENERATE запускается не сразу.

1 Ответ

0 голосов
/ 20 февраля 2019

Исходя из комментария @ Цыварева, теперь у меня есть

file(READ "${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" CONFIG_H_IN)
string(CONFIGURE "${CONFIG_H_IN}" CONFIG_H_TMP)
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/config.h" CONTENT "${CONFIG_H_TMP}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...