add_library(projectM_api INTERFACE) configure_file(version.h.in "${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/version.h" @ONLY) include(GenerateExportHeader) set(PROJECTM_EXPORT_HEADER "${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_export.h") generate_export_header(projectM_api BASE_NAME projectM EXPORT_FILE_NAME "${PROJECTM_EXPORT_HEADER}" ) # Always generate the header, but we only install it if the C++ interface is actually enabled. set(PROJECTM_CXX_EXPORT_HEADER "${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_cxx_export.h") generate_export_header(projectM_api BASE_NAME projectM_CXX EXPORT_FILE_NAME "${PROJECTM_CXX_EXPORT_HEADER}" ) set(PROJECTM_PUBLIC_HEADERS "${PROJECTM_EXPORT_HEADER}" "${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/version.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/audio.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/callbacks.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/core.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/debug.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/logging.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/memory.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/parameters.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/projectM.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/render_opengl.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/touch.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/types.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/projectM-4/user_sprites.h" ) if(ENABLE_CXX_INTERFACE) list(APPEND PROJECTM_PUBLIC_HEADERS ${PROJECTM_CXX_EXPORT_HEADER}) endif() target_sources(projectM_api PRIVATE ${PROJECTM_PUBLIC_HEADERS} ) set_target_properties(projectM_api PROPERTIES EXPORT_NAME API FOLDER libprojectM PUBLIC_HEADER "${PROJECTM_PUBLIC_HEADERS}" ) target_include_directories(projectM_api INTERFACE "$" "$" "$" ) if(NOT BUILD_SHARED_LIBS) target_compile_definitions(projectM_api INTERFACE PROJECTM_STATIC_DEFINE PROJECTM_CXX_STATIC_DEFINE ) endif() add_library(libprojectM::API ALIAS projectM_api) if(ENABLE_INSTALL) install(TARGETS projectM_api EXPORT libprojectMTargets LIBRARY DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime RUNTIME DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Devel PUBLIC_HEADER DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4" COMPONENT Devel ) endif()