Fix CMake scripts, so they can be used via add_subdirectory().

This commit is contained in:
Kai Blaschke
2023-09-19 18:34:28 +02:00
parent 70c29af884
commit b88f96b780
7 changed files with 216 additions and 199 deletions

View File

@ -1,8 +1,12 @@
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
include(CMakeDependentOption)
include(CheckSymbolExists)
# Save the current source/binary dirs if we're in a subdirectory of a larger CMake project.
set(PROJECTM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(PROJECTM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_POSITION_INDEPENDENT_CODE YES)
@ -32,7 +36,7 @@ set(PROJECTM_SO_VERSION "4")
# The actual (full) library version of projectM
set(PROJECTM_LIB_VERSION "${CMAKE_PROJECT_VERSION}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${PROJECTM_SOURCE_DIR}/cmake")
include(VCSVersion)
include(GNUInstallDirs)
@ -42,7 +46,7 @@ set(PROJECTM_LIB_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE STRING "Library installatio
set(PROJECTM_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE STRING "Header installation directory, relative to the install prefix.")
# Dummy file for merged static libs.
set(PROJECTM_DUMMY_SOURCE_FILE "${CMAKE_BINARY_DIR}/dummy.cpp")
set(PROJECTM_DUMMY_SOURCE_FILE "${PROJECTM_BINARY_DIR}/dummy.cpp")
file(TOUCH "${PROJECTM_DUMMY_SOURCE_FILE}")
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
@ -59,6 +63,7 @@ cmake_dependent_option(ENABLE_SDL_UI "Build the SDL2-based developer test UI" OF
cmake_dependent_option(ENABLE_GLES "Enable OpenGL ES support" OFF "NOT ENABLE_EMSCRIPTEN AND NOT CMAKE_SYSTEM_NAME STREQUAL Android" ON)
cmake_dependent_option(ENABLE_OPENMP "Enable OpenMP support if available" ON "NOT ENABLE_EMSCRIPTEN" OFF)
cmake_dependent_option(ENABLE_THREADING "Enable multithreading support." ON "NOT ENABLE_EMSCRIPTEN" OFF)
cmake_dependent_option(ENABLE_INSTALL "Enable installing projectM libraries and headers." OFF "NOT PROJECT_IS_TOP_LEVEL" ON)
option(ENABLE_SYSTEM_GLM "Enable use of system-install GLM library" OFF)
# Experimental/unsupported features
@ -70,7 +75,7 @@ if(ENABLE_SYSTEM_GLM)
else()
add_library(GLM::GLM INTERFACE IMPORTED)
set_target_properties(GLM::GLM PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/vendor"
INTERFACE_INCLUDE_DIRECTORIES "${PROJECTM_SOURCE_DIR}/vendor"
)
endif()
@ -85,21 +90,21 @@ if(ENABLE_EMSCRIPTEN)
# Instead, specifying the required options directly to emcc is the way to go.
# Note: The "SHELL:" syntax is required to pass each argument as-is, but without quotes and CMake's de-duplication.
add_compile_options(
"SHELL:-s USE_SDL=2"
"SHELL:-s MIN_WEBGL_VERSION=2"
"SHELL:-s MAX_WEBGL_VERSION=2"
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
)
"SHELL:-s USE_SDL=2"
"SHELL:-s MIN_WEBGL_VERSION=2"
"SHELL:-s MAX_WEBGL_VERSION=2"
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
)
add_link_options(
"SHELL:-s USE_SDL=2"
"SHELL:-s MIN_WEBGL_VERSION=2"
"SHELL:-s MAX_WEBGL_VERSION=2"
"SHELL:-s FULL_ES2=1"
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
)
"SHELL:-s USE_SDL=2"
"SHELL:-s MIN_WEBGL_VERSION=2"
"SHELL:-s MAX_WEBGL_VERSION=2"
"SHELL:-s FULL_ES2=1"
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
)
if(ENABLE_THREADING)
message(AUTHOR_WARNING "Threading on emscripten is deemed stable, but may have issues. Use with care.\n"
@ -120,12 +125,12 @@ else()
if(ENABLE_GLES)
message(STATUS "Building for OpenGL Embedded Profile")
if(NOT CMAKE_SYSTEM_NAME STREQUAL Linux
AND NOT CMAKE_SYSTEM_NAME STREQUAL Android)
AND NOT CMAKE_SYSTEM_NAME STREQUAL Android)
message(FATAL_ERROR "OpenGL ES 3 support is currently only available for Linux platforms. You're building for ${CMAKE_SYSTEM_NAME}.")
endif()
# We use a local find script for OpenGL::GLES3 until the proposed changes are merged upstream.
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/gles")
list(APPEND CMAKE_MODULE_PATH "${PROJECTM_SOURCE_DIR}/cmake/gles")
find_package(OpenGL REQUIRED COMPONENTS GLES3)
if(NOT TARGET OpenGL::GLES3)
message(FATAL_ERROR "No suitable GLES3 library was found.")

View File

@ -30,7 +30,7 @@ macro(GENERATE_PKG_CONFIG_FILES target package_name)
# multi-config packages such as CMake provides. It's a mess.
set(PKGCONFIG_PROJECTM_LIBRARY "${_lib_name}")
set(PKGCONFIG_PACKAGE_REQUIREMENTS "${PKGCONFIG_PACKAGE_REQUIREMENTS_ALL} ${PKGCONFIG_PACKAGE_REQUIREMENTS_RELEASE}")
configure_file(${CMAKE_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}.pc" @ONLY)
configure_file(${PROJECTM_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}.pc" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${package_name}.pc"
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
DESTINATION "${PROJECTM_LIB_DIR}/pkgconfig"
@ -39,7 +39,7 @@ macro(GENERATE_PKG_CONFIG_FILES target package_name)
set(PKGCONFIG_PROJECTM_LIBRARY "${_lib_name}${CMAKE_DEBUG_POSTFIX}")
set(PKGCONFIG_PACKAGE_REQUIREMENTS "${PKGCONFIG_PACKAGE_REQUIREMENTS_ALL} ${PKGCONFIG_PACKAGE_REQUIREMENTS_DEBUG}")
configure_file(${CMAKE_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}-debug.pc" @ONLY)
configure_file(${PROJECTM_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}-debug.pc" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${package_name}-debug.pc"
CONFIGURATIONS Debug
DESTINATION "${PROJECTM_LIB_DIR}/pkgconfig"

View File

@ -80,9 +80,9 @@ check_include_files("${_std_c_headers}" STDC_HEADERS LANGUAGE C)
unset(_std_c_headers)
# Create global configuration header
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include")
configure_file(config.h.cmake.in "${CMAKE_BINARY_DIR}/include/config.h")
include_directories("${CMAKE_BINARY_DIR}/include")
file(MAKE_DIRECTORY "${PROJECTM_BINARY_DIR}/include")
configure_file(config.h.cmake.in "${PROJECTM_BINARY_DIR}/include/config.h")
include_directories("${PROJECTM_BINARY_DIR}/include")
# Force-include the file in all targets
if(MSVC)

View File

@ -37,22 +37,26 @@ generate_export_header(projectM_api
add_library(libprojectM::API ALIAS projectM_api)
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
)
if(ENABLE_INSTALL)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_export.h"
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/version.h"
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
COMPONENT Devel
)
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
)
install(DIRECTORY include/projectM-4
DESTINATION "${PROJECTM_INCLUDE_DIR}"
COMPONENT Devel
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_export.h"
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/version.h"
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
COMPONENT Devel
)
install(DIRECTORY include/projectM-4
DESTINATION "${PROJECTM_INCLUDE_DIR}"
COMPONENT Devel
)
endif()

View File

@ -4,7 +4,7 @@ add_compile_definitions(
$<IF:$<PLATFORM_ID:Windows>,NOMINMAX,>
$<IF:$<PLATFORM_ID:Windows>,WIN32_LEAN_AND_MEAN,>
$<IF:$<PLATFORM_ID:Windows>,STBI_NO_DDS,>
)
)
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
# dirent.h support
@ -59,10 +59,10 @@ endif()
target_include_directories(projectM_main
PRIVATE
"${CMAKE_SOURCE_DIR}/src"
"${PROJECTM_SOURCE_DIR}/src"
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/Renderer"
"${CMAKE_SOURCE_DIR}/vendor/hlslparser/src"
"${PROJECTM_SOURCE_DIR}/vendor/hlslparser/src"
"${CMAKE_CURRENT_SOURCE_DIR}/MilkdropPreset"
"${MSVC_EXTRA_INCLUDE_DIR}"
)
@ -92,9 +92,9 @@ target_link_libraries(projectM
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
target_link_libraries(projectM
PUBLIC
"-framework CoreFoundation"
)
PUBLIC
"-framework CoreFoundation"
)
endif()
if(ENABLE_LLVM)
@ -120,9 +120,9 @@ set_target_properties(projectM PROPERTIES
if(BUILD_SHARED_LIBS)
target_compile_definitions(projectM_main
PRIVATE
projectM_api_EXPORTS
)
PRIVATE
projectM_api_EXPORTS
)
target_link_libraries(projectM
PUBLIC
@ -130,9 +130,9 @@ if(BUILD_SHARED_LIBS)
)
else()
target_compile_definitions(projectM_main
PUBLIC
PROJECTM_STATIC_DEFINE
)
PUBLIC
PROJECTM_STATIC_DEFINE
)
set_target_properties(projectM PROPERTIES
OUTPUT_NAME $<IF:$<PLATFORM_ID:Windows>,libprojectM,projectM>
@ -142,117 +142,121 @@ endif()
add_library(libprojectM::projectM ALIAS projectM)
install(TARGETS projectM
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}/libprojectM" COMPONENT Devel
)
if(ENABLE_INSTALL)
if(ENABLE_CXX_INTERFACE)
if(ENABLE_THREADING)
install(TARGETS projectM
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}/libprojectM" COMPONENT Devel
)
if(ENABLE_CXX_INTERFACE)
if(ENABLE_THREADING)
target_compile_definitions(projectM
INTERFACE
PROJECTM_USE_THREADS
)
endif()
install(FILES
Audio/PCM.hpp
ProjectM.hpp
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
COMPONENT Devel
)
else()
# Set PROJECTM_STATIC_EXPORT for C++ implementations to use project default visibility
# and no dllimport/dllexport.
set_source_files_properties(ProjectM.cpp Audio/PCM.cpp Audio/FrameAudioData.cpp PROPERTIES
COMPILE_DEFINITIONS PROJECTM_STATIC_DEFINE
)
target_compile_definitions(projectM
INTERFACE
PROJECTM_USE_THREADS
PROJECTM_STATIC_DEFINE
)
endif()
# CMake target exports
# For use from a local projectM build tree (without installing)
export(TARGETS
projectM_api
projectM
NAMESPACE libprojectM::
FILE projectM-exports.cmake
)
# For use from an installed package (system install, vcpkg, homebrew etc.)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
configure_package_config_file(projectM4Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
)
install(FILES
Audio/PCM.hpp
ProjectM.hpp
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
COMPONENT Devel
)
else()
# Set PROJECTM_STATIC_EXPORT for C++ implementations to use project default visibility
# and no dllimport/dllexport.
set_source_files_properties(ProjectM.cpp Audio/PCM.cpp Audio/FrameAudioData.cpp PROPERTIES
COMPILE_DEFINITIONS PROJECTM_STATIC_DEFINE
)
target_compile_definitions(projectM
INTERFACE
PROJECTM_STATIC_DEFINE
)
endif()
# CMake target exports
# For use from a local projectM build tree (without installing)
export(TARGETS
projectM_api
projectM
NAMESPACE libprojectM::
FILE projectM-exports.cmake
)
# For use from an installed package (system install, vcpkg, homebrew etc.)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
configure_package_config_file(projectM4Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
COMPONENT Devel
)
if(NOT ENABLE_EMSCRIPTEN AND ENABLE_GLES)
install(FILES
"${CMAKE_SOURCE_DIR}/cmake/gles/FindOpenGL.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
COMPONENT Devel
)
endif()
if(ENABLE_LLVM)
install(FILES
"${CMAKE_SOURCE_DIR}/cmake/gles/FindLLVM.cmake"
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
COMPONENT Devel
)
endif()
install(EXPORT libprojectMTargets
FILE projectM4Targets.cmake
NAMESPACE libprojectM::
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
COMPONENT Devel
)
# pkg-config export, only supported on UNIX systems.
if(UNIX)
include(GeneratePkgConfigFiles)
if(NOT ENABLE_EMSCRIPTEN AND ENABLE_GLES)
install(FILES
"${PROJECTM_SOURCE_DIR}/cmake/gles/FindOpenGL.cmake"
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
COMPONENT Devel
)
endif()
if(ENABLE_LLVM)
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -L${LLVM_LIB_DIR} ${LLVM_LIBRARIES}")
install(FILES
"${PROJECTM_SOURCE_DIR}/cmake/gles/FindLLVM.cmake"
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
COMPONENT Devel
)
endif()
if(ENABLE_OPENMP)
set(PKGCONFIG_FLAGS "${PKGCONFIG_FLAGS} ${OpenMP_CXX_FLAGS}")
foreach(_library ${OpenMP_CXX_LIBRARIES})
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -l${_library}")
endforeach()
install(EXPORT libprojectMTargets
FILE projectM4Targets.cmake
NAMESPACE libprojectM::
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
COMPONENT Devel
)
# pkg-config export, only supported on UNIX systems.
if(UNIX)
include(GeneratePkgConfigFiles)
if(ENABLE_LLVM)
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -L${LLVM_LIB_DIR} ${LLVM_LIBRARIES}")
endif()
if(ENABLE_OPENMP)
set(PKGCONFIG_FLAGS "${PKGCONFIG_FLAGS} ${OpenMP_CXX_FLAGS}")
foreach(_library ${OpenMP_CXX_LIBRARIES})
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -l${_library}")
endforeach()
endif()
set(PKGCONFIG_PACKAGE_NAME "projectM-4")
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Music Visualizer")
set(PKGCONFIG_PACKAGE_REQUIREMENTS_ALL "opengl")
generate_pkg_config_files(projectM projectM-4)
endif()
set(PKGCONFIG_PACKAGE_NAME "projectM-4")
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Music Visualizer")
set(PKGCONFIG_PACKAGE_REQUIREMENTS_ALL "opengl")
generate_pkg_config_files(projectM projectM-4)
endif()

View File

@ -94,63 +94,67 @@ include(FilesystemSupport.cmake)
add_library(libprojectM::playlist ALIAS projectM_playlist)
install(TARGETS projectM_playlist
EXPORT libprojectMPlaylist
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
)
if(ENABLE_INSTALL)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_playlist_export.h"
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
COMPONENT Devel
)
install(TARGETS projectM_playlist
EXPORT libprojectMPlaylist
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
)
install(DIRECTORY api/projectM-4
DESTINATION "${PROJECTM_INCLUDE_DIR}"
COMPONENT Devel
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_playlist_export.h"
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
COMPONENT Devel
)
install(DIRECTORY api/projectM-4
DESTINATION "${PROJECTM_INCLUDE_DIR}"
COMPONENT Devel
)
# For use from an installed package (system install, vcpkg, homebrew etc.)
include(CMakePackageConfigHelpers)
# For use from an installed package (system install, vcpkg, homebrew etc.)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
configure_package_config_file(projectM4PlaylistConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
)
configure_package_config_file(projectM4PlaylistConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
COMPONENT Devel
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
COMPONENT Devel
)
install(EXPORT libprojectMPlaylist
FILE projectM4PlaylistTargets.cmake
NAMESPACE libprojectM::
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
COMPONENT Devel
)
install(EXPORT libprojectMPlaylist
FILE projectM4PlaylistTargets.cmake
NAMESPACE libprojectM::
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
COMPONENT Devel
)
# pkg-config export, only supported on UNIX systems.
if(UNIX)
include(GeneratePkgConfigFiles)
# pkg-config export, only supported on UNIX systems.
if(UNIX)
include(GeneratePkgConfigFiles)
set(PKGCONFIG_PACKAGE_NAME "projectM-4-playlist")
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Playlist Library")
set(PKGCONFIG_PACKAGE_REQUIREMENTS_RELEASE "projectM-4")
set(PKGCONFIG_PACKAGE_REQUIREMENTS_DEBUG "projectM-4-debug")
set(PKGCONFIG_PACKAGE_NAME "projectM-4-playlist")
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Playlist Library")
set(PKGCONFIG_PACKAGE_REQUIREMENTS_RELEASE "projectM-4")
set(PKGCONFIG_PACKAGE_REQUIREMENTS_DEBUG "projectM-4-debug")
generate_pkg_config_files(projectM_playlist projectM-4-playlist)
endif()
generate_pkg_config_files(projectM_playlist projectM-4-playlist)
endif()

View File

@ -19,8 +19,8 @@ target_compile_definitions(projectM-unittest
# Test includes a header file from libprojectM with its full path in the source dir.
target_include_directories(projectM-unittest
PRIVATE
"${CMAKE_SOURCE_DIR}/src/libprojectM"
"${CMAKE_SOURCE_DIR}"
"${PROJECTM_SOURCE_DIR}/src/libprojectM"
"${PROJECTM_SOURCE_DIR}"
)
target_link_libraries(projectM-unittest