mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2024-11-23 09:54:26 +08:00
cmake: add target helper functions
This commit is contained in:
parent
7edfe66274
commit
2c8bef26de
@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
include(EchoTarget)
|
||||||
include(CMakeParseArguments)
|
include(CMakeParseArguments)
|
||||||
|
|
||||||
macro(set_complex_link_libraries)
|
macro(set_complex_link_libraries)
|
||||||
@ -46,3 +48,32 @@ macro(add_complex_library)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
endmacro(add_complex_library)
|
endmacro(add_complex_library)
|
||||||
|
|
||||||
|
if(${CMAKE_VERSION} VERSION_GREATER 2.8.8)
|
||||||
|
set(CMAKE_OBJECT_TARGET_SUPPORT 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
function(create_object_cotarget target)
|
||||||
|
|
||||||
|
set(cotarget "${target}-objects")
|
||||||
|
|
||||||
|
get_target_property(${target}_TYPE ${target} TYPE)
|
||||||
|
|
||||||
|
if(NOT ((${target}_TYPE MATCHES "SHARED_LIBRARY") OR (${target}_TYPE MATCHES "SHARED_LIBRARY")))
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_target_property(${target}_SOURCES ${target} SOURCES)
|
||||||
|
get_target_property(${target}_LINK_LIBRARIES ${target} LINK_LIBRARIES)
|
||||||
|
get_target_property(${target}_INCLUDE_DIRECTORIES ${target} INCLUDE_DIRECTORIES)
|
||||||
|
|
||||||
|
add_library(${cotarget} "OBJECT" ${${target}_SOURCES})
|
||||||
|
|
||||||
|
set_target_properties(${cotarget} PROPERTIES LINK_LIBRARIES "${${target}_LINK_LIBRARIES}")
|
||||||
|
set_target_properties(${cotarget} PROPERTIES INCLUDE_DIRECTORIES "${${target}_INCLUDE_DIRECTORIES}")
|
||||||
|
|
||||||
|
echo_target(${target})
|
||||||
|
echo_target(${cotarget})
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
178
cmake/EchoTarget.cmake
Normal file
178
cmake/EchoTarget.cmake
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
function(echo_target_property tgt prop)
|
||||||
|
# v for value, d for defined, s for set
|
||||||
|
get_property(v TARGET ${tgt} PROPERTY ${prop})
|
||||||
|
get_property(d TARGET ${tgt} PROPERTY ${prop} DEFINED)
|
||||||
|
get_property(s TARGET ${tgt} PROPERTY ${prop} SET)
|
||||||
|
|
||||||
|
# only produce output for values that are set
|
||||||
|
if(s)
|
||||||
|
message("tgt='${tgt}' prop='${prop}'")
|
||||||
|
message(" value='${v}'")
|
||||||
|
message(" defined='${d}'")
|
||||||
|
message(" set='${s}'")
|
||||||
|
message("")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(echo_target tgt)
|
||||||
|
if(NOT TARGET ${tgt})
|
||||||
|
message("There is no target named '${tgt}'")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(props
|
||||||
|
DEBUG_OUTPUT_NAME
|
||||||
|
RELEASE_OUTPUT_NAME
|
||||||
|
DEBUG_POSTFIX
|
||||||
|
RELEASE_POSTFIX
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY_DEBUG
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY_RELEASE
|
||||||
|
ARCHIVE_OUTPUT_NAME
|
||||||
|
ARCHIVE_OUTPUT_NAME_DEBUG
|
||||||
|
ARCHIVE_OUTPUT_NAME_RELEASE
|
||||||
|
AUTOMOC
|
||||||
|
AUTOMOC_MOC_OPTIONS
|
||||||
|
BUILD_WITH_INSTALL_RPATH
|
||||||
|
BUNDLE
|
||||||
|
BUNDLE_EXTENSION
|
||||||
|
COMPILE_DEFINITIONS
|
||||||
|
COMPILE_DEFINITIONS_DEBUG
|
||||||
|
COMPILE_DEFINITIONS_RELEASE
|
||||||
|
COMPILE_FLAGS
|
||||||
|
DEBUG_POSTFIX
|
||||||
|
DEFINE_SYMBOL
|
||||||
|
ENABLE_EXPORTS
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
EchoString
|
||||||
|
FOLDER
|
||||||
|
FRAMEWORK
|
||||||
|
Fortran_FORMAT
|
||||||
|
Fortran_MODULE_DIRECTORY
|
||||||
|
GENERATOR_FILE_NAME
|
||||||
|
GNUtoMS
|
||||||
|
HAS_CXX
|
||||||
|
IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
|
||||||
|
IMPORTED
|
||||||
|
IMPORTED_CONFIGURATIONS
|
||||||
|
IMPORTED_IMPLIB
|
||||||
|
IMPORTED_IMPLIB_RELEASE
|
||||||
|
IMPORTED_IMPLIB_RELEASE
|
||||||
|
IMPORTED_LINK_DEPENDENT_LIBRARIES
|
||||||
|
IMPORTED_LINK_DEPENDENT_LIBRARIES_DEBUG
|
||||||
|
IMPORTED_LINK_DEPENDENT_LIBRARIES_RELEASE
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE
|
||||||
|
IMPORTED_LINK_INTERFACE_LIBRARIES
|
||||||
|
IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG
|
||||||
|
IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE
|
||||||
|
IMPORTED_LINK_INTERFACE_MULTIPLICITY
|
||||||
|
IMPORTED_LINK_INTERFACE_MULTIPLICITY_DEBUG
|
||||||
|
IMPORTED_LINK_INTERFACE_MULTIPLICITY_RELEASE
|
||||||
|
IMPORTED_LOCATION
|
||||||
|
IMPORTED_LOCATION_DEBUG
|
||||||
|
IMPORTED_LOCATION_RELEASE
|
||||||
|
IMPORTED_NO_SONAME
|
||||||
|
IMPORTED_NO_SONAME_DEBUG
|
||||||
|
IMPORTED_NO_SONAME_RELEASE
|
||||||
|
IMPORTED_SONAME
|
||||||
|
IMPORTED_SONAME_DEBUG
|
||||||
|
IMPORTED_SONAME_RELEASE
|
||||||
|
IMPORT_PREFIX
|
||||||
|
IMPORT_SUFFIX
|
||||||
|
INCLUDE_DIRECTORIES
|
||||||
|
INSTALL_NAME_DIR
|
||||||
|
INSTALL_RPATH
|
||||||
|
INSTALL_RPATH_USE_LINK_PATH
|
||||||
|
INTERPROCEDURAL_OPTIMIZATION
|
||||||
|
INTERPROCEDURAL_OPTIMIZATION_DEBUG
|
||||||
|
INTERPROCEDURAL_OPTIMIZATION_RELEASE
|
||||||
|
LABELS
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY_DEBUG
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY_RELEASE
|
||||||
|
LIBRARY_OUTPUT_NAME
|
||||||
|
LIBRARY_OUTPUT_NAME_DEBUG
|
||||||
|
LIBRARY_OUTPUT_NAME_RELEASE
|
||||||
|
LINKER_LANGUAGE
|
||||||
|
LINK_DEPENDS
|
||||||
|
LINK_LIBRARIES
|
||||||
|
LINK_FLAGS
|
||||||
|
LINK_FLAGS_DEBUG
|
||||||
|
LINK_FLAGS_RELEASE
|
||||||
|
LINK_INTERFACE_LIBRARIES
|
||||||
|
LINK_INTERFACE_LIBRARIES_DEBUG
|
||||||
|
LINK_INTERFACE_LIBRARIES_RELEASE
|
||||||
|
LINK_INTERFACE_MULTIPLICITY
|
||||||
|
LINK_INTERFACE_MULTIPLICITY_DEBUG
|
||||||
|
LINK_INTERFACE_MULTIPLICITY_RELEASE
|
||||||
|
LINK_SEARCH_END_STATIC
|
||||||
|
LINK_SEARCH_START_STATIC
|
||||||
|
LOCATION
|
||||||
|
LOCATION_DEBUG
|
||||||
|
LOCATION_RELEASE
|
||||||
|
MACOSX_BUNDLE
|
||||||
|
MACOSX_BUNDLE_INFO_PLIST
|
||||||
|
MACOSX_FRAMEWORK_INFO_PLIST
|
||||||
|
MAP_IMPORTED_CONFIG_DEBUG
|
||||||
|
MAP_IMPORTED_CONFIG_RELEASE
|
||||||
|
OSX_ARCHITECTURES
|
||||||
|
OSX_ARCHITECTURES_DEBUG
|
||||||
|
OSX_ARCHITECTURES_RELEASE
|
||||||
|
OUTPUT_NAME
|
||||||
|
OUTPUT_NAME_DEBUG
|
||||||
|
OUTPUT_NAME_RELEASE
|
||||||
|
POST_INSTALL_SCRIPT
|
||||||
|
PREFIX
|
||||||
|
PRE_INSTALL_SCRIPT
|
||||||
|
PRIVATE_HEADER
|
||||||
|
PROJECT_LABEL
|
||||||
|
PUBLIC_HEADER
|
||||||
|
RESOURCE
|
||||||
|
RULE_LAUNCH_COMPILE
|
||||||
|
RULE_LAUNCH_CUSTOM
|
||||||
|
RULE_LAUNCH_LINK
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY_DEBUG
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE
|
||||||
|
RUNTIME_OUTPUT_NAME
|
||||||
|
RUNTIME_OUTPUT_NAME_DEBUG
|
||||||
|
RUNTIME_OUTPUT_NAME_RELEASE
|
||||||
|
SKIP_BUILD_RPATH
|
||||||
|
SOURCES
|
||||||
|
SOVERSION
|
||||||
|
STATIC_LIBRARY_FLAGS
|
||||||
|
STATIC_LIBRARY_FLAGS_DEBUG
|
||||||
|
STATIC_LIBRARY_FLAGS_RELEASE
|
||||||
|
SUFFIX
|
||||||
|
TYPE
|
||||||
|
VERSION
|
||||||
|
VS_DOTNET_REFERENCES
|
||||||
|
VS_GLOBAL_KEYWORD
|
||||||
|
VS_GLOBAL_PROJECT_TYPES
|
||||||
|
VS_KEYWORD
|
||||||
|
VS_SCC_AUXPATH
|
||||||
|
VS_SCC_LOCALPATH
|
||||||
|
VS_SCC_PROJECTNAME
|
||||||
|
VS_SCC_PROVIDER
|
||||||
|
VS_WINRT_EXTENSIONS
|
||||||
|
VS_WINRT_REFERENCES
|
||||||
|
WIN32_EXECUTABLE
|
||||||
|
)
|
||||||
|
|
||||||
|
message("======================== ${tgt} ========================")
|
||||||
|
foreach(p ${props})
|
||||||
|
echo_target_property("${tgt}" "${p}")
|
||||||
|
endforeach()
|
||||||
|
message("")
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(echo_targets)
|
||||||
|
set(tgts ${ARGV})
|
||||||
|
foreach(t ${tgts})
|
||||||
|
echo_target("${t}")
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user