CMake: Set default visibility to hidden and dllexport on windows

This commit is contained in:
Max Bruckner 2017-03-01 23:16:47 +01:00
parent b44c917be9
commit 6405fd15e3
3 changed files with 18 additions and 0 deletions

View File

@ -61,6 +61,16 @@ if (ENABLE_SANITIZERS)
)
endif()
option(ENABLE_PUBLIC_SYMBOLS "Export library symbols." On)
if (ENABLE_PUBLIC_SYMBOLS)
list(APPEND custom_compiler_flags -fvisibility=hidden)
add_definitions(-DCJSON_EXPORT_SYMBOLS -DCJSON_API_VISIBILITY)
endif()
option(ENABLE_HIDDEN_SYMBOLS "Hide library symbols." Off)
if (ENABLE_HIDDEN_SYMBOLS)
add_definitions(-DCJSON_HIDE_SYMBOLS -UCJSON_API_VISIBILITY)
endif()
# apply custom compiler flags
foreach(compiler_flag ${custom_compiler_flags})
#remove problematic characters

View File

@ -23,6 +23,7 @@
/* cJSON */
/* JSON parser in C. */
#pragma GCC visibility push(default)
#include <string.h>
#include <stdio.h>
#include <math.h>
@ -30,6 +31,8 @@
#include <float.h>
#include <limits.h>
#include <ctype.h>
#pragma GCC visibility pop
#include "cJSON.h"
/* define our own boolean type */

View File

@ -7,6 +7,11 @@ if(ENABLE_CJSON_TEST)
if (werror_found)
target_compile_options(unity PRIVATE "-Wno-error")
endif()
# Disable -fvisibility=hidden for Unity
list(FIND custom_compiler_flags "-fvisibility=hidden" visibility_found)
if (visibility_found)
target_compile_options(unity PRIVATE "-fvisibility=default")
endif()
#copy test files
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/inputs")