Skip to content

Commit 3953f21

Browse files
committed
[{.,c89stringutils}/CMakeLists.txt] Use standard cmake install from my other projects
1 parent 5e87196 commit 3953f21

File tree

2 files changed

+36
-25
lines changed

2 files changed

+36
-25
lines changed

CMakeLists.txt

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,27 @@
11
cmake_minimum_required(VERSION 3.12)
2-
project(c89stringutils VERSION 0.0.1 LANGUAGES C)
2+
project(c89stringutils VERSION 0.0.2 LANGUAGES C)
33

4-
set(CMAKE_C_STANDARD 90)
54
set(CMAKE_C_VISIBILITY_PRESET hidden)
65
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
7-
8-
# control where the static and shared libraries are built so that on windows
9-
# we don't need to tinker with the path to run the executable
10-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
11-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
12-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
6+
set(CMAKE_C_STANDARD 90)
137

148
add_library("${PROJECT_NAME}_compiler_flags" INTERFACE)
159
target_compile_features("${PROJECT_NAME}_compiler_flags" INTERFACE "c_std_${CMAKE_C_STANDARD}")
1610

11+
# add compiler warning flags just when building this project via
12+
# the BUILD_INTERFACE genex
1713
set(gcc_like "$<COMPILE_LANG_AND_ID:C,CXX,ARMClang,AppleClang,Clang,GNU,LCC>")
1814
set(msvc "$<COMPILE_LANG_AND_ID:C,CXX,MSVC>")
19-
# -g -fsanitize=address -fno-omit-frame-pointer
2015
target_compile_options(
2116
"${PROJECT_NAME}_compiler_flags"
2217
INTERFACE
23-
"$<${gcc_like}:$<BUILD_INTERFACE:-Wall;-Wextra;-Wshadow;-Wformat=2;-Wunused;-pedantic>>"
18+
"$<${gcc_like}:$<BUILD_INTERFACE:-Wshadow;-Wformat=2;-Wall;-pedantic>>"
2419
"$<${msvc}:$<BUILD_INTERFACE:-W3;-WX;-Zi;-permissive->>"
2520
)
26-
if (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
27-
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
28-
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
29-
endif (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
21+
22+
# Set the build directories
23+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
24+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
3025

3126
# configure a header file to pass the version number only
3227
configure_file(
@@ -38,14 +33,19 @@ add_subdirectory("${PROJECT_NAME}")
3833

3934
include(CTest)
4035
if (BUILD_TESTING)
41-
add_subdirectory("c89stringutils_tests")
36+
add_subdirectory("${PROJECT_NAME}_tests")
4237
endif (BUILD_TESTING)
4338

39+
###########
40+
# Install #
41+
###########
42+
43+
include(GNUInstallDirs)
44+
4445
install(
4546
FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.h"
46-
DESTINATION "include"
47+
TYPE "INCLUDE"
4748
)
48-
4949
include(InstallRequiredSystemLibraries)
5050
set(CPACK_BUNDLE_NAME "${PROJECT_NAME}")
5151
set(CPACK_PACKAGE_VENDOR "Samuel Marks")
@@ -56,7 +56,7 @@ if (APPLE)
5656
set(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Info.plist")
5757
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CustomVolumeIcon.icns")
5858
endif (APPLE)
59-
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/LICENSE.txt")
59+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/license.txt")
6060
set(CPACK_PACKAGE_VERSION_MAJOR "${${PROJECT_NAME}_VERSION_MAJOR}")
6161
set(CPACK_PACKAGE_VERSION_MINOR "${${PROJECT_NAME}_VERSION_MINOR}")
6262
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/cmake/README.txt")
@@ -70,7 +70,7 @@ include(CMakePackageConfigHelpers)
7070
configure_package_config_file(
7171
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in"
7272
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
73-
INSTALL_DESTINATION "lib/cmake/example"
73+
INSTALL_DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}"
7474
NO_SET_AND_CHECK_MACRO
7575
NO_CHECK_REQUIRED_COMPONENTS_MACRO
7676
)
@@ -81,7 +81,5 @@ write_basic_package_version_file(
8181
VERSION "${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}"
8282
COMPATIBILITY AnyNewerVersion
8383
)
84-
install(FILES
85-
"${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
86-
"${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
84+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
8785
DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}")

c89stringutils/CMakeLists.txt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,18 @@ include(GenerateExportHeader)
2828
set(_export_file "${CMAKE_BINARY_DIR}/${LIBRARY_NAME}_export.h")
2929
generate_export_header("${LIBRARY_NAME}" EXPORT_FILE_NAME "${_export_file}")
3030

31-
# install rules
32-
set(installable_libs "${LIBRARY_NAME}")
31+
#################
32+
# Install rules #
33+
#################
34+
35+
include(GNUInstallDirs)
36+
37+
# setup the version numbering
38+
set_property(TARGET "${LIBRARY_NAME}" PROPERTY VERSION "${${PROJECT_NAME}_VERSION}")
39+
set_property(TARGET "${LIBRARY_NAME}" PROPERTY SOVERSION "${${PROJECT_NAME}_VERSION_MAJOR}")
40+
41+
set(installable_libs # "${EXEC_NAME}"
42+
"${LIBRARY_NAME}" "${PROJECT_NAME}_compiler_flags")
3343
if (TARGET "${DEPENDANT_LIBRARY}")
3444
list(APPEND installable_libs "${DEPENDANT_LIBRARY}")
3545
endif ()
@@ -38,4 +48,7 @@ install(TARGETS ${installable_libs}
3848
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
3949
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
4050
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
41-
install(FILES ${Header_Files} "${_export_file}" TYPE "INCLUDE")
51+
install(EXPORT "${LIBRARY_NAME}Targets" DESTINATION "${CMAKE_INSTALL_DATADIR}/${LIBRARY_NAME}")
52+
53+
install(FILES ${Header_Files} "${_export_file}"
54+
TYPE "INCLUDE")

0 commit comments

Comments
 (0)