CMake template clenaups and script adaptations
This commit is contained in:
1 parent
3087fcea8a
commit
9248925b77
19 files changed
+361
-170
No files matched your search
@@ -217,7 +217,7 @@ endfunction()
|
||||
# add_lib_module(NAME [TYPE STATIC|SHARED] [OUTPUT_NAME name] [DEPENDS ...]
|
||||
# [EXTRA_SOURCES ...] [NO_DOCS])
|
||||
#
|
||||
# Called from a library module's own CMakeLists.txt (e.g. source/Core/CMakeLists.txt).
|
||||
# Called from a library module's own CMakeLists.txt (e.g. source/HotReload/CMakeLists.txt).
|
||||
# Sources/headers are globbed relative to that module's own directory:
|
||||
# src/*.cpp and include/*.h(pp) underneath it. TYPE picks STATIC or SHARED
|
||||
# for this module only; omit it to use the project-wide default
|
||||
@@ -283,7 +283,7 @@ endmacro()
|
||||
# =============================================================================
|
||||
# add_exe_module(NAME [OUTPUT_NAME name] [DEPENDS ...] [EXTRA_SOURCES ...] [NO_DOCS])
|
||||
#
|
||||
# Called from an app module's own CMakeLists.txt (e.g. HelloApp/CMakeLists.txt).
|
||||
# Called from an app module's own CMakeLists.txt (e.g. HotReloadDemo/Host/CMakeLists.txt).
|
||||
# Sources/headers are globbed relative to that module's own directory:
|
||||
# *.cpp and include/*.h(pp) underneath it.
|
||||
# =============================================================================
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
# -DDOXYGEN_<ANY_DOXYFILE_TAG>=... any Doxyfile tag can be set this way --
|
||||
# see https://www.doxygen.nl/manual/config.html
|
||||
# A module can opt out with NO_DOCS, e.g.:
|
||||
# add_lib_module(core_lib TYPE SHARED NO_DOCS ...)
|
||||
# add_lib_module(hotreload_lib TYPE STATIC NO_DOCS ...)
|
||||
# =============================================================================
|
||||
|
||||
# =============================================================================
|
||||
@@ -65,7 +65,7 @@
|
||||
# -DDOXYGEN_<ANY_DOXYFILE_TAG>=... any Doxyfile tag can be set this way --
|
||||
# see https://www.doxygen.nl/manual/config.html
|
||||
# A module can opt out with NO_DOCS, e.g.:
|
||||
# add_lib_module(core_lib TYPE SHARED NO_DOCS ...)
|
||||
# add_lib_module(hotreload_lib TYPE STATIC NO_DOCS ...)
|
||||
# =============================================================================
|
||||
|
||||
include_guard(GLOBAL)
|
||||
|
||||
@@ -52,3 +52,31 @@ function(hot_reload_enable_patchable_functions TARGET_NAME)
|
||||
"see HOT_RELOAD_SYMBOL_SKIPPED_TOO_SMALL in hot_reload.h.")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Restricts TARGET's export surface to only what's explicitly marked
|
||||
# with HOT_RELOAD_EXPORT (hot_reload.h) -- the opposite of both
|
||||
# GCC/Clang's default (export every symbol with external linkage) and
|
||||
# WINDOWS_EXPORT_ALL_SYMBOLS. Narrower, not quieter: see the top-level
|
||||
# README's "Why do std::string/std::vector symbols show up as
|
||||
# PATCHED?" section for the one specific kind of noise this
|
||||
# deliberately does NOT remove, and why removing it would need
|
||||
# excluding all weak-linkage symbols by default -- which would just as
|
||||
# happily hide a hot-reloadable template of your OWN.
|
||||
#
|
||||
# What this DOES remove: your own internal helpers you never meant to
|
||||
# expose, and (on GCC/Clang, if the target statically links its C++
|
||||
# runtime) incidental runtime-library internals -- both real,
|
||||
# observed cases from building this library and its examples.
|
||||
function(hot_reload_restrict_exports TARGET_NAME)
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_options(${TARGET_NAME} PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden)
|
||||
elseif(MSVC)
|
||||
# MSVC already exports nothing by default -- WINDOWS_EXPORT_ALL_SYMBOLS
|
||||
# is what opts OUT of that; simply not setting it (and not adding
|
||||
# individual __declspec(dllexport)/HOT_RELOAD_EXPORT other than where
|
||||
# you want them) is this function's Windows equivalent. Nothing to
|
||||
# apply here, but calling this on every platform your target builds
|
||||
# for, unconditionally, is still the point -- see hot_reload_enable_
|
||||
# patchable_functions() immediately above for the same pattern.
|
||||
endif()
|
||||
endfunction()
|
||||
Reference in new issue
Block a user