Skip to content

Instantly share code, notes, and snippets.

@julp
Last active October 7, 2015 09:37
Show Gist options
  • Save julp/3144139 to your computer and use it in GitHub Desktop.
Save julp/3144139 to your computer and use it in GitHub Desktop.
Dump CMake internal state
cmake_minimum_required(VERSION 2.8)
set(public_debug_namespace "DEBUG_")
set(private_debug_namespace "_${public_debug_namespace}")
set(
"${public_debug_namespace}_source_properties"
ABSTRACT
COMPILE_DEFINITIONS
COMPILE_DEFINITIONS_<CONFIG>
COMPILE_FLAGS
EXTERNAL_OBJECT
Fortran_FORMAT
GENERATED
HEADER_FILE_ONLY
KEEP_EXTENSION
LABELS
LANGUAGE
LOCATION
MACOSX_PACKAGE_LOCATION
OBJECT_DEPENDS
OBJECT_OUTPUTS
SYMBOLIC
WRAP_EXCLUDE
)
set(
"${public_debug_namespace}_target_properties"
<CONFIG>_OUTPUT_NAME
<CONFIG>_POSTFIX
ARCHIVE_OUTPUT_DIRECTORY
ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
ARCHIVE_OUTPUT_NAME
ARCHIVE_OUTPUT_NAME_<CONFIG>
AUTOMOC
AUTOMOC_MOC_OPTIONS
BUILD_WITH_INSTALL_RPATH
BUNDLE
BUNDLE_EXTENSION
COMPILE_DEFINITIONS
COMPILE_DEFINITIONS_<CONFIG>
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_<CONFIG>
IMPORTED_LINK_DEPENDENT_LIBRARIES
IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
IMPORTED_LINK_INTERFACE_LANGUAGES
IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
IMPORTED_LINK_INTERFACE_LIBRARIES
IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
IMPORTED_LINK_INTERFACE_MULTIPLICITY
IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
IMPORTED_LOCATION
IMPORTED_LOCATION_<CONFIG>
IMPORTED_NO_SONAME
IMPORTED_NO_SONAME_<CONFIG>
IMPORTED_SONAME
IMPORTED_SONAME_<CONFIG>
IMPORT_PREFIX
IMPORT_SUFFIX
INCLUDE_DIRECTORIES
INSTALL_NAME_DIR
INSTALL_RPATH
INSTALL_RPATH_USE_LINK_PATH
INTERPROCEDURAL_OPTIMIZATION
INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
LABELS
LIBRARY_OUTPUT_DIRECTORY
LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
LIBRARY_OUTPUT_NAME
LIBRARY_OUTPUT_NAME_<CONFIG>
LINKER_LANGUAGE
LINK_DEPENDS
LINK_FLAGS
LINK_FLAGS_<CONFIG>
LINK_INTERFACE_LIBRARIES
LINK_INTERFACE_LIBRARIES_<CONFIG>
LINK_INTERFACE_MULTIPLICITY
LINK_INTERFACE_MULTIPLICITY_<CONFIG>
LINK_SEARCH_END_STATIC
LINK_SEARCH_START_STATIC
LOCATION
LOCATION_<CONFIG>
MACOSX_BUNDLE
MACOSX_BUNDLE_INFO_PLIST
MACOSX_FRAMEWORK_INFO_PLIST
MAP_IMPORTED_CONFIG_<CONFIG>
OSX_ARCHITECTURES
OSX_ARCHITECTURES_<CONFIG>
OUTPUT_NAME
OUTPUT_NAME_<CONFIG>
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_<CONFIG>
RUNTIME_OUTPUT_NAME
RUNTIME_OUTPUT_NAME_<CONFIG>
SKIP_BUILD_RPATH
SOURCES
SOVERSION
STATIC_LIBRARY_FLAGS
STATIC_LIBRARY_FLAGS_<CONFIG>
SUFFIX
TYPE
VERSION
VS_DOTNET_REFERENCES
#VS_GLOBAL_<variable>
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
#XCODE_ATTRIBUTE_<an-attribute>
)
function(debug _arg1) # _arg1 = target name
get_target_property("${private_debug_namespace}_sources" "${_arg1}" SOURCES)
message("Sources for target '${_arg1}' are: ${${private_debug_namespace}_sources}")
foreach("${private_debug_namespace}_property" ${${public_debug_namespace}_target_properties})
# instead of CMAKE_BUILD_TYPE, iterate on CMAKE_CONFIGURATION_TYPES ?
if(${private_debug_namespace}_property MATCHES "<CONFIG>")
string(REPLACE "<CONFIG>" "${CMAKE_BUILD_TYPE}" "${private_debug_namespace}_property" "${${private_debug_namespace}_property}")
endif(${private_debug_namespace}_property MATCHES "<CONFIG>")
get_target_property("${private_debug_namespace}_i" "${_arg1}" ${${private_debug_namespace}_property})
if(${private_debug_namespace}_i)
message("[TP] ${${private_debug_namespace}_property} = ${${private_debug_namespace}_i}")
endif(${private_debug_namespace}_i)
endforeach("${private_debug_namespace}_property")
foreach("${private_debug_namespace}_source" ${${private_debug_namespace}_sources})
message("[S] ${${private_debug_namespace}_source}")
foreach("${private_debug_namespace}_property" ${${public_debug_namespace}_source_properties})
get_source_file_property("${private_debug_namespace}_i" "${${private_debug_namespace}_source}" ${${private_debug_namespace}_property})
if(${private_debug_namespace}_i)
message("[SP] ${${private_debug_namespace}_property} = ${${private_debug_namespace}_i}")
endif(${private_debug_namespace}_i)
endforeach("${private_debug_namespace}_property")
endforeach("${private_debug_namespace}_source")
endfunction(debug)
# Sample
add_executable(fake fake.c)
debug(fake)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment