Update CMakeLists.txt

to make QtZeroConf installable and usable from other projects
This commit is contained in:
Florian Meinicke
2020-09-11 08:27:42 +02:00
parent d630284b10
commit a8084c9eac

View File

@ -1,16 +1,20 @@
project(QtZeroConf) project(QtZeroConf)
cmake_minimum_required(VERSION 2.8.11)
find_package(Qt5 COMPONENTS Core Network) find_package(Qt5 COMPONENTS Core Network)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_library(QtZeroConf set(PUBLIC_HEADERS
qzeroconfservice.h qzeroconfservice.h
qzeroconfglobal.h qzeroconfglobal.h
qzeroconfservice.cpp
qzeroconf.h qzeroconf.h
) )
add_library(QtZeroConf
${PUBLIC_HEADERS}
qzeroconfservice.cpp
)
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)
target_compile_definitions(QtZeroConf PRIVATE QT_BUILD_ZEROCONF_LIB) target_compile_definitions(QtZeroConf PRIVATE QT_BUILD_ZEROCONF_LIB)
@ -20,11 +24,13 @@ endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
target_sources(QtZeroConf PRIVATE target_sources(QtZeroConf PRIVATE
avahi-qt/qt-watch.h
avahi-qt/qt-watch_p.h avahi-qt/qt-watch_p.h
avahi-qt/qt-watch.cpp avahi-qt/qt-watch.cpp
avahiclient.cpp avahiclient.cpp
) )
list(APPEND ${PUBLIC_HEADERS}
avahi-qt/qt-watch.h
)
target_link_libraries(QtZeroConf PRIVATE libavahi) target_link_libraries(QtZeroConf PRIVATE libavahi)
endif() endif()
@ -37,18 +43,20 @@ if(APPLE)
target_link_libraries(QtZeroConf PUBLIC ${CoreServices}) target_link_libraries(QtZeroConf PUBLIC ${CoreServices})
endif() endif()
target_include_directories(QtZeroConf PUBLIC "${CMAKE_CURRENT_LIST_DIR}") target_include_directories(QtZeroConf PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
target_link_libraries(QtZeroConf PUBLIC Qt5::Core Qt5::Network) target_link_libraries(QtZeroConf PUBLIC Qt5::Core Qt5::Network)
if(WIN32) if(WIN32)
target_sources(QtZeroConf PRIVATE target_sources(QtZeroConf PRIVATE
qzeroconf.h
bonjour_p.h bonjour_p.h
bonjour.cpp bonjour.cpp
bonjour-sdk/dnssd_clientlib.c bonjour-sdk/dnssd_clientlib.c
bonjour-sdk/dnssd_clientstub.c bonjour-sdk/dnssd_clientstub.c
bonjour-sdk/dnssd_ipc.c bonjour-sdk/dnssd_ipc.c
) )
target_link_libraries(QtZeroConf PUBLIC ws2_32) target_link_libraries(QtZeroConf PUBLIC ws2_32)
if(MSVC) if(MSVC)
target_link_libraries(QtZeroConf PUBLIC "legacy_stdio_definitions.lib") target_link_libraries(QtZeroConf PUBLIC "legacy_stdio_definitions.lib")
@ -121,6 +129,18 @@ if(ANDROID)
${ACR}/timeeventq.c ${ACR}/timeeventq.c
${ACR}/util.c ${ACR}/util.c
${ACR}/wide-area.c ${ACR}/wide-area.c
) )
list(APPEND ${PUBLIC_HEADERS}
avahi-qt/qt-watch.h
)
target_compile_definitions(QtZeroConf PRIVATE HAVE_STRLCPY GETTEXT_PACKAGE HAVE_NETLINK) target_compile_definitions(QtZeroConf PRIVATE HAVE_STRLCPY GETTEXT_PACKAGE HAVE_NETLINK)
endif() endif()
# install
set_target_properties(QtZeroConf PROPERTIES PUBLIC_HEADER
"${PUBLIC_HEADERS}"
)
install(TARGETS QtZeroConf
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/QtZeroConf
)