Browse Source

Add visibility-hidden

This should make all symbols that are not marked otherwise have hidden
visibility. There still may be exposed symbols if marked with respective
attributes.
Andreas Pokorny 1 year ago
parent
commit
d18fa929fb
1 changed files with 5 additions and 0 deletions
  1. 5 0
      CMakeLists.txt

+ 5 - 0
CMakeLists.txt

@@ -35,6 +35,10 @@
 # Generate the buildfiles in a sub directory to not clutter the root directory with build files:
 # Generate the buildfiles in a sub directory to not clutter the root directory with build files:
 # mkdir build && cd build && cmake -G "Unix Makefiles" .. && cmake --build .
 # mkdir build && cd build && cmake -G "Unix Makefiles" .. && cmake --build .
 #
 #
+# Ensure that you avoid exposing godot-cpp symbols - this might lead to hard to debug errors if you ever load multiple
+# plugins using difference godot-cpp versions. Use visibility hidden whenever possible:
+# set_target_properties(<all-my-plugin-related-targets> PROPERTIES CXX_VISIBILITY_PRESET hidden)
+#
 # Todo
 # Todo
 # Test build for Windows, Mac and mingw.
 # Test build for Windows, Mac and mingw.
 
 
@@ -221,6 +225,7 @@ set_target_properties(${PROJECT_NAME}
 	PROPERTIES
 	PROPERTIES
 		CXX_EXTENSIONS OFF
 		CXX_EXTENSIONS OFF
 		POSITION_INDEPENDENT_CODE ON
 		POSITION_INDEPENDENT_CODE ON
+		CXX_VISIBILITY_PRESET hidden
 		ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
 		ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
 		LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
 		LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
 		RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
 		RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"