diff --git a/mo2.cmake b/mo2.cmake index ff8f0b8..70220c7 100644 --- a/mo2.cmake +++ b/mo2.cmake @@ -41,6 +41,7 @@ set(QT_TARGETS_FOLDER autogen) include(${CMAKE_CURRENT_LIST_DIR}/mo2_cpp.cmake) include(${CMAKE_CURRENT_LIST_DIR}/mo2_python.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/mo2_extension.cmake) # mark as included set(MO2_DEFINED true) diff --git a/mo2_cpp.cmake b/mo2_cpp.cmake index b8fc1e1..b787999 100644 --- a/mo2_cpp.cmake +++ b/mo2_cpp.cmake @@ -327,12 +327,7 @@ endfunction() function(mo2_install_plugin TARGET) cmake_parse_arguments(MO2 "FOLDER" "" "" ${ARGN}) - if (${MO2_FOLDER}) - install(TARGETS ${TARGET} RUNTIME DESTINATION ${MO2_INSTALL_BIN}/plugins/$) - else() - install(TARGETS ${TARGET} RUNTIME DESTINATION bin/extensions/${CMAKE_PROJECT_NAME}/plugins) - endif() - + install(TARGETS ${TARGET} RUNTIME DESTINATION ${MO2_INSTALL_BIN}/extensions/${MO2_EXTENSION_ID}/plugins) if (NOT MO2_INSTALL_IS_BIN) install(TARGETS ${TARGET} ARCHIVE DESTINATION lib) # install PDB if possible diff --git a/mo2_extension.cmake b/mo2_extension.cmake new file mode 100644 index 0000000..a277b96 --- /dev/null +++ b/mo2_extension.cmake @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.16) + +#! mo2_configure_extension : configure a MO2 extension +# +# this function read the extension identifier from the metadata.json file and +# expose it as a ${extension_identifier} variable +# +# this function also trigger the installation of the metadata file to the +# extension directory +# +function(mo2_configure_extension) + set(METADATA_FILE ${CMAKE_CURRENT_SOURCE_DIR}/metadata.json) + + if(NOT (EXISTS ${METADATA_FILE})) + message(ERROR "metadata file ${METADATA_FILE} not found") + endif() + + file(READ ${METADATA_FILE} JSON_METADATA) + string(JSON extension_identifier GET ${JSON_METADATA} id) + + set(MO2_EXTENSION_ID ${extension_identifier} PARENT_SCOPE) + + install(FILES ${METADATA_FILE} + DESTINATION ${MO2_INSTALL_BIN}/extensions/${extension_identifier}/) +endfunction() diff --git a/mo2_python.cmake b/mo2_python.cmake index 1ef8419..bb6883b 100644 --- a/mo2_python.cmake +++ b/mo2_python.cmake @@ -230,7 +230,7 @@ function(mo2_configure_python_module TARGET) FILES "${PROJECT_SOURCE_DIR}/plugin-requirements.txt") endif() - set(install_dir "${MO2_INSTALL_BIN}/plugins/${TARGET}") + set(install_dir "${MO2_INSTALL_PATH}/bin/extensions/${MO2_EXTENSION_ID}/plugins/${TARGET}") # directories that go in bin/plugins/${name} install(