Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Cmake module as part of the installation/packaging #74

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions cmake/sigutilsConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")

check_required_components("@PROJECT_NAME@")
47 changes: 45 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ add_library(sigutils SHARED ${SRCS})
target_add_relative_file_macro(sigutils)

# Add public include directories
target_include_directories(sigutils PUBLIC include/)
target_include_directories(sigutils
INTERFACE $<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_SOURCE_DIR}/src/include/)

# Extra compilation definitions
if(SIGUTILS_SINGLE_PRECISSION)
Expand All @@ -91,6 +93,7 @@ endif()
# Target properties
set_property(TARGET sigutils PROPERTY VERSION ${SIGUTILS_VERSION})
set_property(TARGET sigutils PROPERTY SOVERSION ${SIGUTILS_ABI_VERSION})
set_property(TARGET sigutils PROPERTY EXPORT_NAME ${PROJECT_NAME})

# Target dependencies
target_link_libraries(sigutils ${SNDFILE_LIBRARIES})
Expand All @@ -110,10 +113,50 @@ endif()
target_pc_file_generate(sigutils "Digital signal processing utility library")

# File install
install(TARGETS sigutils LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT LIB)
install(TARGETS sigutils
EXPORT sigutils-export
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT LIB)

install(DIRECTORY include/sigutils DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT DEVEL)

install(FILES ${PROJECT_BINARY_DIR}/src/sigutils.pc DESTINATION ${CMAKE_INSTALL_PKGCONFIGDIR} COMPONENT DEVEL)

set(INSTALL_EXPORTS_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})

install(EXPORT sigutils-export
FILE sigutilsTargets.cmake
NAMESPACE sigutils::
DESTINATION ${INSTALL_EXPORTS_DIR}
)

set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
set(namespace "${PROJECT_NAME}::")

include(CMakePackageConfigHelpers)

configure_package_config_file(
${CMAKE_SOURCE_DIR}/cmake/sigutilsConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/sigutilsConfig.cmake
INSTALL_DESTINATION ${INSTALL_EXPORTS_DIR}
PATH_VARS INCLUDE_INSTALL_DIR)

write_basic_package_version_file(
${CMAKE_BINARY_DIR}/sigutilsConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion)

install(FILES
${CMAKE_CURRENT_BINARY_DIR}/sigutilsConfig.cmake
${CMAKE_BINARY_DIR}/sigutilsConfigVersion.cmake
DESTINATION ${INSTALL_EXPORTS_DIR}
)


# General packaging settings
set(CPACK_PACKAGE_NAME sigutils)
set(CPACK_PACKAGE_DIRECTORY ${PROJECT_BINARY_DIR}/dist)
Expand Down
2 changes: 1 addition & 1 deletion tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ find_package(Catch2)
if(Catch2_FOUND)
# General options
file(GLOB_RECURSE TEST_SRCS LIST_DIRECTORIES false *.cpp)
add_executable(sigutils_test EXCLUDE_FROM_ALL ${TEST_SRCS})
add_executable(sigutils_test EXCLUDE_FROM_ALL ${TEST_SRCS} cmake_tests/test.c)
target_include_directories(sigutils_test PUBLIC $<TARGET_PROPERTY:sigutils,INCLUDE_DIRECTORIES>)
target_compile_definitions(sigutils_test PUBLIC $<TARGET_PROPERTY:sigutils,COMPILE_DEFINITIONS>)
target_link_libraries(sigutils_test $<TARGET_LINKER_FILE:sigutils>)
Expand Down
8 changes: 8 additions & 0 deletions tests/cmake_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.20.0)
project(testCmakeSigUtils)

find_package(sigutils REQUIRED)

add_executable(testCmakeSigUtils test.c)

target_link_libraries(testCmakeSigUtils sigutils::sigutils)
17 changes: 17 additions & 0 deletions tests/cmake_tests/test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//
// Created by happycactus on 20/06/23.
//

#include <sigutils/sigutils.h>
#include <sigutils/version.h>

#include <stdio.h>

int main(int argc, char *argv[])
{
su_lib_init();

printf("Testing sigutils version: %08x ABI: %d\n", SIGUTILS_VERSION, SIGUTILS_ABI_VERSION);

return 0;
}