#cmake
Вопрос:
Я пытался понять это весь вчерашний день и до сегодняшнего дня пытаюсь настроить файл манифеста с именем файла плагина
В настоящее время у меня есть:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.12)
function(printv)
foreach(var ${ARGN})
message("${var} = ${${var}}")
endforeach()
endfunction()
function(printenv)
foreach(var ${ARGN})
message("${var} = $ENV{${var}}")
endforeach()
endfunction()
project(SimpleAmp VERSION 1.0 HOMEPAGE_URL https://jghfunrun.github.io/plugins/simple-amp)
set(PROJECT_URI ${PROJECT_HOMEPAGE_URL})
add_library(amp MODULE amp.c)
get_target_property(PLUGIN_FILE amp LIBRARY_OUTPUT_NAME)
printv(PLUGIN_FILE PROJECT_URI)
configure_file(manifest.ttl.in manifest.ttl)
configure_file(amp.ttl.in amp.ttl)
Manifest.ttl.in
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<${PROJECT_URI}>
a lv2:Plugin ;
lv2:binary <${PLUGIN_FILE}> ;
rdfs:seeAlso <amp.ttl> .
Однако lv2:binary
линия становится
lv2:binary <PLUGIN_FILE-NOTFOUND> ;
Я также попытался использовать строку set(PLUGIN_FILE $<TARGET_FILE_NAME:amp>)
, но у нее не было шансов сработать, потому set
что она вычисляется во время настройки, а выражения генератора вычисляются во время генерации
Ответ №1:
Я заставил его работать, вернувшись к заданному методу и добавив
file(GENERATE
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/manifest.ttl
INPUT
${CMAKE_CURRENT_BINARY_DIR}/manifest.ttl.conf
)
в промежутке между этими двумя configure_file
» с » человек в Раздоре нашел это, что объясняет это