Make FC's CMakeLists.txt provide a list of required DLLs to projects that use it
This commit is contained in:
parent
d3c2f60fe0
commit
0e6e86f273
2 changed files with 120 additions and 3 deletions
|
|
@ -48,7 +48,6 @@ IF( WIN32 )
|
||||||
FIND_PACKAGE(Boost 1.54 REQUIRED COMPONENTS coroutine)
|
FIND_PACKAGE(Boost 1.54 REQUIRED COMPONENTS coroutine)
|
||||||
SET(Boost_LIBRARIES ${BOOST_LIBRARIES_TEMP} ${Boost_LIBRARIES})
|
SET(Boost_LIBRARIES ${BOOST_LIBRARIES_TEMP} ${Boost_LIBRARIES})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
ELSE(WIN32)
|
ELSE(WIN32)
|
||||||
MESSAGE(STATUS "Configuring fc to build on Unix/Apple")
|
MESSAGE(STATUS "Configuring fc to build on Unix/Apple")
|
||||||
|
|
||||||
|
|
@ -65,7 +64,6 @@ ELSE(WIN32)
|
||||||
ENDIF(NOT APPLE)
|
ENDIF(NOT APPLE)
|
||||||
ENDIF(WIN32)
|
ENDIF(WIN32)
|
||||||
|
|
||||||
|
|
||||||
find_package( OpenSSL )
|
find_package( OpenSSL )
|
||||||
|
|
||||||
set( CMAKE_FIND_LIBRARY_SUFFIXES ${ORIGINAL_LIB_SUFFIXES} )
|
set( CMAKE_FIND_LIBRARY_SUFFIXES ${ORIGINAL_LIB_SUFFIXES} )
|
||||||
|
|
@ -162,7 +160,7 @@ list(APPEND sources ${fc_headers})
|
||||||
|
|
||||||
add_subdirectory( vendor/easylzma )
|
add_subdirectory( vendor/easylzma )
|
||||||
|
|
||||||
setup_library( fc SOURCES ${sources} LIBRARY_TYPE STATIC )
|
setup_library( fc SOURCES ${sources} LIBRARY_TYPE STATIC DONT_INSTALL_LIBRARY )
|
||||||
|
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
target_compile_definitions(fc PUBLIC WIN32 NOMINMAX _WIN32_WINNT=0x0501 _CRT_SECURE_NO_WARNINGS
|
target_compile_definitions(fc PUBLIC WIN32 NOMINMAX _WIN32_WINNT=0x0501 _CRT_SECURE_NO_WARNINGS
|
||||||
|
|
@ -205,5 +203,45 @@ target_link_libraries( fc easylzma_static ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES
|
||||||
#add_executable( test_sleep tests/sleep.cpp )
|
#add_executable( test_sleep tests/sleep.cpp )
|
||||||
#target_link_libraries( test_sleep fc )
|
#target_link_libraries( test_sleep fc )
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
# now generate a list of the DLLs we're using to use during the install process
|
||||||
|
include (ParseLibraryList)
|
||||||
|
PARSE_LIBRARY_LIST(${Boost_LIBRARIES}
|
||||||
|
FOUND parseOk
|
||||||
|
DEBUG Boost_LIBRARIES_DEBUG
|
||||||
|
OPT Boost_LIBRARIES_RELEASE
|
||||||
|
GENERAL Boost_LIBRARIES_GENERAL)
|
||||||
|
|
||||||
|
set(SHARED_LIBRARIES_RELEASE)
|
||||||
|
foreach(boost_import_lib ${Boost_LIBRARIES_RELEASE})
|
||||||
|
get_filename_component(import_lib_name_root ${boost_import_lib} NAME_WE)
|
||||||
|
get_filename_component(import_lib_path ${boost_import_lib} PATH)
|
||||||
|
set(boost_dll "${import_lib_path}/${import_lib_name_root}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
|
set(SHARED_LIBRARIES_RELEASE ${SHARED_LIBRARIES_RELEASE} ${boost_dll})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
|
||||||
|
set(SHARED_LIBRARIES_DEBUG)
|
||||||
|
foreach(boost_import_lib ${Boost_LIBRARIES_DEBUG})
|
||||||
|
get_filename_component(import_lib_name_root ${boost_import_lib} NAME_WE)
|
||||||
|
get_filename_component(import_lib_path ${boost_import_lib} PATH)
|
||||||
|
set(boost_dll "${import_lib_path}/${import_lib_name_root}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
|
set(SHARED_LIBRARIES_DEBUG ${SHARED_LIBRARIES_DEBUG} ${boost_dll})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
foreach(lib ${OPENSSL_LIBRARIES})
|
||||||
|
get_filename_component(lib_name ${lib} NAME_WE)
|
||||||
|
if (${lib_name} STREQUAL "libeay32")
|
||||||
|
get_filename_component(lib_dir ${lib} DIRECTORY)
|
||||||
|
get_filename_component(lib_bin_dir "${lib_dir}/../bin" REALPATH)
|
||||||
|
set(SHARED_LIBRARIES_DEBUG ${SHARED_LIBRARIES_DEBUG} "${lib_bin_dir}/${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
|
set(SHARED_LIBRARIES_RELEASE ${SHARED_LIBRARIES_RELEASE} "${lib_bin_dir}/${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set_property(TARGET fc PROPERTY SHARED_LIBRARIES_DEBUG ${SHARED_LIBRARIES_DEBUG})
|
||||||
|
set_property(TARGET fc PROPERTY SHARED_LIBRARIES_RELEASE ${SHARED_LIBRARIES_RELEASE})
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
MESSAGE(STATUS "Finished fc module configuration...")
|
MESSAGE(STATUS "Finished fc module configuration...")
|
||||||
|
|
||||||
|
|
|
||||||
79
CMakeModules/ParseLibraryList.cmake
Normal file
79
CMakeModules/ParseLibraryList.cmake
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# -*- mode: cmake -*-
|
||||||
|
|
||||||
|
#
|
||||||
|
# Shamelessly stolen from MSTK who shamelessly stole from Amanzi open source code https://software.lanl.gov/ascem/trac)
|
||||||
|
#
|
||||||
|
# PARSE_LIBRARY_LIST( <lib_list>
|
||||||
|
# DEBUG <out_debug_list>
|
||||||
|
# OPT <out_opt_list>
|
||||||
|
# GENERAL <out_gen_list> )
|
||||||
|
|
||||||
|
# CMake module
|
||||||
|
include(CMakeParseArguments)
|
||||||
|
|
||||||
|
function(PARSE_LIBRARY_LIST)
|
||||||
|
|
||||||
|
# Macro: _print_usage
|
||||||
|
macro(_print_usage)
|
||||||
|
message("PARSE_LIBRARY_LIST <lib_list>\n"
|
||||||
|
" FOUND <out_flag>\n"
|
||||||
|
" DEBUG <out_debug_list>\n"
|
||||||
|
" OPT <out_opt_list>\n"
|
||||||
|
" GENERAL <out_gen_list>\n"
|
||||||
|
"lib_list string to parse\n"
|
||||||
|
"FOUND flag to indicate if keywords were found\n"
|
||||||
|
"DEBUG variable containing debug libraries\n"
|
||||||
|
"OPT variable containing optimized libraries\n"
|
||||||
|
"GENERAL variable containing debug libraries\n")
|
||||||
|
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# Read in args
|
||||||
|
cmake_parse_arguments(PARSE_ARGS "" "FOUND;DEBUG;OPT;GENERAL" "" ${ARGN})
|
||||||
|
set(_parse_list "${PARSE_ARGS_UNPARSED_ARGUMENTS}")
|
||||||
|
if ( (NOT PARSE_ARGS_FOUND) OR
|
||||||
|
(NOT PARSE_ARGS_DEBUG) OR
|
||||||
|
(NOT PARSE_ARGS_OPT) OR
|
||||||
|
(NOT PARSE_ARGS_GENERAL) OR
|
||||||
|
(NOT _parse_list )
|
||||||
|
)
|
||||||
|
_print_usage()
|
||||||
|
message(FATAL_ERROR "Invalid arguments")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Now split the list
|
||||||
|
set(_debug_libs "")
|
||||||
|
set(_opt_libs "")
|
||||||
|
set(_gen_libs "")
|
||||||
|
foreach( item ${_parse_list} )
|
||||||
|
if( ${item} MATCHES debug OR
|
||||||
|
${item} MATCHES optimized OR
|
||||||
|
${item} MATCHES general )
|
||||||
|
|
||||||
|
if( ${item} STREQUAL "debug" )
|
||||||
|
set( mylist "_debug_libs" )
|
||||||
|
elseif( ${item} STREQUAL "optimized" )
|
||||||
|
set( mylist "_opt_libs" )
|
||||||
|
elseif( ${item} STREQUAL "general" )
|
||||||
|
set( mylist "_gen_libs" )
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
list( APPEND ${mylist} ${item} )
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
|
||||||
|
# Now set output vairables
|
||||||
|
set(${PARSE_ARGS_DEBUG} "${_debug_libs}" PARENT_SCOPE)
|
||||||
|
set(${PARSE_ARGS_OPT} "${_opt_libs}" PARENT_SCOPE)
|
||||||
|
set(${PARSE_ARGS_GENERAL} "${_gen_libs}" PARENT_SCOPE)
|
||||||
|
|
||||||
|
# If any of the lib lists are defined set flag to TRUE
|
||||||
|
if ( (_debug_libs) OR (_opt_libs) OR (_gen_libs) )
|
||||||
|
set(${PARSE_ARGS_FOUND} TRUE PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${PARSE_ARGS_FOUND} FALSE PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction(PARSE_LIBRARY_LIST)
|
||||||
|
|
||||||
Loading…
Reference in a new issue