Discovering how exported library building works with CMake

Now exporting a shared and static version of the wsjtx_udp library.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6695 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Bill Somerville 2016-05-24 15:19:15 +00:00
parent f669df4d08
commit 1f6e882800

View File

@ -534,6 +534,12 @@ set (UDP_library_CXXSRCS
MessageServer.cpp
)
set (UDP_library_HEADERS
Radio.hpp
MessageServer.hpp
${PROJECT_BINARY_DIR}/udp_export.h
)
set (message_aggregator_CXXSRCS
UDPExamples/MessageAggregator.cpp
UDPExamples/MessageAggregatorMainWindow.cpp
@ -1070,14 +1076,25 @@ target_link_libraries (wsjtx wsjt_fort wsjt_cxx wsjt_qt wsjt_qtmm ${hamlib_LIBRA
qt5_use_modules (wsjtx SerialPort) # not sure why the interface link library syntax above doesn't work
# make a library for WSJT-X UDP servers
add_library (wsjtx_udp ${LIB_TYPE} ${UDP_library_CXXSRCS})
add_library (wsjtx_udp SHARED ${UDP_library_CXXSRCS})
add_library (wsjtx_udp-static STATIC ${UDP_library_CXXSRCS})
target_include_directories (wsjtx_udp
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:${WSJT_INCLUDE_DESTINATION}/wsjtx>
)
target_include_directories (wsjtx_udp-static
INTERFACE
$<INSTALL_INTERFACE:${WSJT_INCLUDE_DESTINATION}/wsjtx>
)
set_target_properties (wsjtx_udp PROPERTIES
PUBLIC_HEADER "${UDP_library_HEADERS}"
)
set_target_properties (wsjtx_udp-static PROPERTIES
COMPILE_FLAGS -DUDP_STATIC_DEFINE
OUTPUT_NAME wsjtx_udp
)
qt5_use_modules (wsjtx_udp Network)
qt5_use_modules (wsjtx_udp-static Network)
generate_export_header (wsjtx_udp BASE_NAME udp)
add_executable (udp_daemon UDPExamples/UDPDaemon.cpp UDPExamples/udp_daemon.rc ${WSJTX_ICON_FILE})
@ -1118,16 +1135,21 @@ install (TARGETS wsjtx
)
install (TARGETS wsjtx_udp EXPORT udp
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION}
LIBRARY DESTINATION ${WSJT_LIB_DESTINATION}
ARCHIVE DESTINATION ${WSJT_LIB_DESTINATION}
PUBLIC_HEADER DESTINATION ${WSJT_INCLUDE_DESTINATION}/wsjtx
)
install (TARGETS wsjtx_udp-static EXPORT udp-static
DESTINATION ${WSJT_LIB_DESTINATION}
)
install (EXPORT udp NAMESPACE wsjtx::
DESTINATION ${WSJT_LIB_DESTINATION}/cmake/wsjtx
)
install (FILES
Radio.hpp
MessageServer.hpp
${PROJECT_BINARY_DIR}/udp_export.h
DESTINATION ${WSJT_INCLUDE_DESTINATION}/wsjtx)
install (EXPORT udp-static NAMESPACE wsjtx::
DESTINATION ${WSJT_LIB_DESTINATION}/cmake/wsjtx
)
install (TARGETS udp_daemon message_aggregator
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
@ -1316,7 +1338,7 @@ if (NOT is_debug_build)
#set (hamlib_lib_dir ${hamlib_lib_dir}/../bin)
get_filename_component (fftw_lib_dir ${FFTW3F_LIBRARY} PATH)
list (APPEND fixup_library_dirs ${WSJT_LIB_DESTINATION} ${fftw_lib_dir})
list (APPEND fixup_library_dirs ${fftw_lib_dir})
# install required Qt plugins
install (