Skip to content

Commit 0c050f3

Browse files
committed
Add support to build using cmake config files installed by libzip
Add support to build using cmake config files installed by libzip. Add and option that controls if config mode is to be used, this is on per default on non windows systems. The package name used by libzip is libzip not LIBZIP so add a variable that holds this and use it where needed in CMakeLists.txt and Config.cmake.in. FindLIBZIP.cmake is unneeded in config mode so don't install it if config mode is used. This commit also includes changes due to line endings. This the editor that saves in \n instead of \r\n.
1 parent 2bf8e7f commit 0c050f3

File tree

2 files changed

+25
-14
lines changed

2 files changed

+25
-14
lines changed

CMakeLists.txt

+22-11
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,31 @@ if(NOT WIN32)
2323
set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -ansi -pedantic -std=c++11")
2424
set(CMAKE_CXX_FLAGS_DEBUG "-g")
2525
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
26+
set(NOTWIN32 ON)
2627
endif()
2728

2829
option(LIBZIPPP_INSTALL "Install library" ${is_root_project})
2930
option(LIBZIPPP_INSTALL_HEADERS "Install the headers" ${is_root_project})
3031
option(LIBZIPPP_BUILD_TESTS "Build unit tests" ${is_root_project})
3132
option(LIBZIPPP_ENABLE_ENCRYPTION "Build with encryption enabled" OFF)
33+
option(LIBZIPPP_CMAKE_CONFIG_MODE "Build with libzip installed cmake config files" ${NOTWIN32})
3234

3335
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
3436

35-
find_package(LIBZIP MODULE REQUIRED)
37+
if(LIBZIPPP_CMAKE_CONFIG_MODE)
38+
set(LIBZIP_PKGNAME "libzip")
39+
set(fp_mode "CONFIG")
40+
else()
41+
set(LIBZIP_PKGNAME "LIBZIP")
42+
set(fp_mode "MODULE")
43+
endif()
44+
45+
find_package(${LIBZIP_PKGNAME} ${fp_mode} REQUIRED)
3646

3747
add_library(libzippp "src/libzippp.cpp")
3848
add_library(libzippp::libzippp ALIAS libzippp) # Convenience alias
39-
target_include_directories(libzippp
40-
PUBLIC
49+
target_include_directories(libzippp
50+
PUBLIC
4151
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
4252
$<INSTALL_INTERFACE:include/libzippp>
4353
)
@@ -61,7 +71,7 @@ if(LIBZIPPP_BUILD_TESTS)
6171
add_executable(libzippp_test "tests/tests.cpp")
6272
target_link_libraries(libzippp_test PRIVATE libzippp)
6373
add_test(NAME libzippp_tests COMMAND libzippp_test)
64-
74+
6575
if (BUILD_SHARED_LIBS)
6676
set_target_properties(libzippp_test PROPERTIES OUTPUT_NAME "libzippp_shared_test")
6777
else()
@@ -71,11 +81,11 @@ endif()
7181

7282
if(LIBZIPPP_INSTALL)
7383
install(
74-
TARGETS libzippp
84+
TARGETS libzippp
7585
EXPORT libzipppTargets
7686
LIBRARY DESTINATION lib
77-
ARCHIVE DESTINATION lib
78-
RUNTIME DESTINATION bin
87+
ARCHIVE DESTINATION lib
88+
RUNTIME DESTINATION bin
7989
)
8090

8191
if(LIBZIPPP_INSTALL_HEADERS)
@@ -91,10 +101,10 @@ if(LIBZIPPP_INSTALL)
91101
else()
92102
set(configInstallDestination share/${PROJECT_NAME})
93103
endif()
94-
104+
95105
configure_package_config_file(
96-
"Config.cmake.in"
97-
${PROJECT_CONFIG_FILE}
106+
"Config.cmake.in"
107+
${PROJECT_CONFIG_FILE}
98108
INSTALL_DESTINATION ${configInstallDestination}
99109
)
100110
write_basic_package_version_file(
@@ -103,7 +113,8 @@ if(LIBZIPPP_INSTALL)
103113
)
104114

105115
install(
106-
FILES ${PROJECT_CONFIG_FILE} ${PROJECT_VERSION_FILE} cmake/FindLIBZIP.cmake
116+
FILES ${PROJECT_CONFIG_FILE} ${PROJECT_VERSION_FILE}
117+
$<$<NOT:$<BOOL:"${LIBZIPPP_CMAKE_CONFIG_MODE}">>:cmake/FindLIBZIP.cmake>
107118
DESTINATION ${configInstallDestination}
108119
)
109120

Config.cmake.in

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
@PACKAGE_INIT@
22

3-
find_package(LIBZIP QUIET)
4-
if(NOT LIBZIP_FOUND)
3+
find_package(@LIBZIP_PKGNAME@ QUIET)
4+
if(NOT @LIBZIP_PKGNAME@_FOUND)
55
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
66
include(CMakeFindDependencyMacro)
7-
find_dependency(LIBZIP REQUIRED)
7+
find_dependency(@LIBZIP_PKGNAME@ REQUIRED)
88
endif()
99

1010
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")

0 commit comments

Comments
 (0)