CMake updates: exports, drop static, disable cppzmq tests

- Properly export the lokimq::lokimq target for use as a sub-project
- Drop the lokimq::static target; the library will just be static or
non-static dependending on cmake's BUILD_SHARED_LIBS setting
- Properly disable cppzmq tests (the previous setting resulted in cmake
warnings)
This commit is contained in:
Jason Rhinelander 2020-03-02 11:21:52 -04:00
parent 0493082040
commit 7be9d71d7f
1 changed files with 31 additions and 24 deletions

View File

@ -2,41 +2,48 @@ cmake_minimum_required(VERSION 3.5)
project(liblokimq CXX)
set(lokimq_sources
add_library(lokimq
lokimq/lokimq.cpp
lokimq/bt_serialize.cpp
)
)
add_library(lokimq ${lokimq_sources})
install(
FILES lokimq/batch.h
lokimq/bt_serialize.h
lokimq/hex.h
lokimq/lokimq.h
lokimq/string_view.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lokimq
)
add_library(lokimq-static STATIC EXCLUDE_FROM_ALL ${lokimq_sources})
set_target_properties(lokimq-static PROPERTIES OUTPUT_NAME lokimq)
find_package(PkgConfig REQUIRED)
pkg_check_modules(ZMQ REQUIRED libzmq>=4.1)
set(CPPZMQ_BUILD_TESTS OFF)
set(CPPZMQ_BUILD_TESTS OFF CACHE BOOL "Disable cppzmq tests")
add_subdirectory(cppzmq EXCLUDE_FROM_ALL)
foreach(target lokimq lokimq-static)
target_include_directories(${target}
PUBLIC
$<INSTALL_INTERFACE:>
$<INSTALL_INTERFACE:mapbox-variant/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mapbox-variant/include>
)
target_include_directories(lokimq
PUBLIC
$<INSTALL_INTERFACE:>
$<INSTALL_INTERFACE:mapbox-variant/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mapbox-variant/include>
)
target_compile_options(${target} PRIVATE -Wall -Wextra -Werror)
set_property(TARGET ${target} PROPERTY CXX_STANDARD 14)
set_property(TARGET ${target} PROPERTY CXX_STANDARD_REQUIRED ON)
endforeach()
target_compile_options(lokimq PRIVATE -Wall -Wextra -Werror)
set_property(TARGET lokimq PROPERTY CXX_STANDARD 14)
set_property(TARGET lokimq PROPERTY CXX_STANDARD_REQUIRED ON)
target_link_libraries(lokimq PUBLIC cppzmq)
target_link_libraries(lokimq-static PUBLIC cppzmq-static)
add_library(lokimq::lokimq ALIAS lokimq)
add_library(lokimq::static ALIAS lokimq-static)
export(
TARGETS lokimq
NAMESPACE lokimq::
FILE lokimqTargets.cmake
)
install(
TARGETS lokimq
EXPORT lokimqConfig
)
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
set(lokimq_IS_TOPLEVEL_PROJECT TRUE)