Merge topic 'GenerateExportHeader-tests'

2410b91 Merge some GenerateExportHeader subtests.
4017db1 Speed up the GenerateExportHeader unit test (#14453).
This commit is contained in:
Brad King 2013-12-19 10:13:38 -05:00 committed by CMake Topic Stage
commit 3b00ff84d2
31 changed files with 595 additions and 326 deletions

View File

@ -55,93 +55,9 @@ else()
endif()
endif()
set(DEPS
libshared
libstatic
lib_shared_and_static
)
foreach(DEP ${DEPS})
try_compile(Result ${CMAKE_CURRENT_BINARY_DIR}/${DEP}_build
${CMAKE_CURRENT_SOURCE_DIR}/${DEP}
${DEP}
OUTPUT_VARIABLE Out
)
if (NOT Result)
message("OUTPUT: ${Out}")
endif()
endforeach()
# The _do_build macro is called from a child scope, where
# the current source and binary dir are different. Save them here
# for use in the macro.
set(TEST_TOP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(TEST_TOP_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
# We seem to get race conditions is writing this stuff to the same file at least on MinGW
# So to write to separate source and build directories, we use a count to differentiate.
set (COUNT 0)
macro(_do_build Include Library LibrarySource Source)
math(EXPR COUNT "${COUNT} + 1" )
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test${COUNT}/src.cpp" "#include \"${Include}\"\n"
"int main() { ${Source}; }\n"
)
if ("${Library}" STREQUAL "static_variant")
set(CONDITIONAL_STATIC_DEFINE "add_definitions(-DLIBSHARED_AND_STATIC_STATIC_DEFINE)\n")
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test${COUNT}/CMakeLists.txt"
"cmake_minimum_required(VERSION 2.8)\n"
"project(compiletest)\n"
"set(CMAKE_INCLUDE_CURRENT_DIR ON)\n"
"set(CMAKE_RUNTIME_OUTPUT_DIRECTORY \"\${CMAKE_CURRENT_BINARY_DIR}\")\n"
"include(GenerateExportHeader)\n"
"add_compiler_export_flags()\n"
"if(NOT \"${ERROR_FLAG}\" STREQUAL \"\")\n"
" add_definitions(${ERROR_FLAG})\n"
"endif()\n"
"include(\"${TEST_TOP_BINARY_DIR}/${LibrarySource}_build/Targets.cmake\")\n"
"include_directories(\"${TEST_TOP_SOURCE_DIR}/${LibrarySource}\"\n"
" \"${TEST_TOP_BINARY_DIR}/${LibrarySource}_build\")\n"
"${CONDITIONAL_STATIC_DEFINE}"
"add_executable(compiletest src.cpp)\n"
"target_link_libraries(compiletest ${Library})\n"
)
try_compile(Result ${CMAKE_CURRENT_BINARY_DIR}/fail${COUNT}
${CMAKE_CURRENT_BINARY_DIR}/test${COUNT}
compiletest
OUTPUT_VARIABLE Out
)
endmacro()
macro(build_fail Include Library LibrarySource Source Message)
_do_build(${Include} ${Library} ${LibrarySource} "${Source}")
test_fail(Result ${Message})
endmacro()
macro(build_pass Include Library LibrarySource Source Message)
_do_build(${Include} ${Library} ${LibrarySource} "${Source}")
test_pass(Result ${Message})
endmacro()
include(GenerateExportHeader)
add_subdirectory(visibility_preset)
add_subdirectory(lib_shared_and_static)
add_compiler_export_flags()
@ -159,23 +75,17 @@ macro(macro_add_test_library name)
${${name}_BINARY_DIR} # For the export header.
)
list(APPEND link_libraries ${name})
add_subdirectory(${name}test)
endmacro()
macro_add_test_library(libshared)
macro_add_test_library(libstatic)
add_subdirectory(lib_shared_and_static)
add_subdirectory(lib_shared_and_statictest)
add_subdirectory(override_symbol)
add_subdirectory(nodeprecated)
add_subdirectory(prefix)
if(NOT BORLAND)
add_subdirectory(c_identifier)
endif()
if (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES Clang))
# We deliberately call deprecated methods, and test for that elsewhere.
# No need to clutter the test output with warnings.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
endif()
@ -187,3 +97,24 @@ endif()
add_executable(GenerateExportHeader exportheader_test.cpp)
target_link_libraries(GenerateExportHeader ${link_libraries})
if (WIN32)
if(MSVC AND COMPILER_HAS_DEPRECATED)
set(_platform Win32)
elseif(MINGW AND COMPILER_HAS_DEPRECATED)
set(_platform MinGW)
else()
set(_platform WinEmpty)
endif()
elseif(COMPILER_HAS_HIDDEN_VISIBILITY AND USE_COMPILER_HIDDEN_VISIBILITY)
set(_platform UNIX)
elseif(COMPILER_HAS_DEPRECATED)
set(_platform UNIX_DeprecatedOnly)
else()
set(_platform Empty)
endif()
message("#### Testing reference: ${_platform}")
target_compile_definitions(GenerateExportHeader
PRIVATE
"SRC_DIR=${CMAKE_CURRENT_SOURCE_DIR}/reference/${_platform}"
"BIN_DIR=${CMAKE_CURRENT_BINARY_DIR}"
)

View File

@ -11,6 +11,52 @@
#define DOES_NOT_BUILD(function) function
#endif
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string>
void compare(const char* refName, const char* testName)
{
std::ifstream ref;
ref.open(refName);
if (!ref.is_open())
{
std::cout << "Could not open \"" << refName << "\"." << std::endl;
exit(1);
}
std::ifstream test;
test.open(testName);
if (!test.is_open())
{
std::cout << "Could not open \"" << testName << "\"." << std::endl;
exit(1);
}
while (!ref.eof() && !test.eof())
{
std::string refLine;
std::string testLine;
std::getline(ref, refLine);
std::getline(test, testLine);
if (testLine.size() && testLine[testLine.size()-1] == ' ')
{
testLine = testLine.substr(0, testLine.size() - 1);
}
if (refLine != testLine)
{
std::cout << "Ref and test are not the same:\n Ref: \""
<< refLine << "\"\n Test: \"" << testLine << "\"\n";
exit(1);
}
}
if (!ref.eof() || !test.eof())
{
std::cout << "Ref and test have differing numbers of lines.";
exit(1);
}
}
int main()
{
{
@ -78,5 +124,13 @@ int main()
libstatic_not_exported();
libstatic_excluded();
#define STRINGIFY_IMPL(A) #A
#define STRINGIFY(A) STRINGIFY_IMPL(A)
compare(STRINGIFY(SRC_DIR) "/libshared_export.h",
STRINGIFY(BIN_DIR) "/libshared/libshared_export.h");
compare(STRINGIFY(SRC_DIR) "/libstatic_export.h",
STRINGIFY(BIN_DIR) "/libstatic/libstatic_export.h");
return 0;
}

View File

@ -5,7 +5,15 @@ project(lib_shared_and_static)
include(GenerateExportHeader)
add_compiler_export_flags()
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
if (CMAKE_CXX_FLAGS MATCHES "-fvisibility=hidden")
message(SEND_ERROR "Do not use add_compiler_export_flags before adding this directory")
endif()
if (CMAKE_CXX_FLAGS MATCHES "-fvisibility-inlines-hidden")
message(SEND_ERROR "Do not use add_compiler_export_flags before adding this directory")
endif()
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@ -14,9 +22,13 @@ set(lib_SRCS
)
add_library(shared_variant SHARED ${lib_SRCS})
set_target_properties(shared_variant PROPERTIES DEFINE_SYMBOL SHARED_VARIANT_MAKEDLL)
add_library(static_variant ${lib_SRCS})
generate_export_header(shared_variant BASE_NAME libshared_and_static)
generate_export_header(shared_variant
BASE_NAME libshared_and_static
PREFIX_NAME MYPREFIX_
)
set_target_properties(static_variant PROPERTIES COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE)

View File

@ -4,51 +4,51 @@
#include "libshared_and_static_export.h"
class LIBSHARED_AND_STATIC_EXPORT LibsharedAndStatic {
class MYPREFIX_LIBSHARED_AND_STATIC_EXPORT LibsharedAndStatic {
public:
int libshared_and_static() const;
int libshared_and_static_exported() const;
int LIBSHARED_AND_STATIC_DEPRECATED libshared_and_static_deprecated() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED libshared_and_static_deprecated() const;
int libshared_and_static_not_exported() const;
int LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded() const;
};
class LibsharedAndStaticNotExported {
public:
int libshared_and_static() const;
int LIBSHARED_AND_STATIC_EXPORT libshared_and_static_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_EXPORT libshared_and_static_exported() const;
int LIBSHARED_AND_STATIC_DEPRECATED libshared_and_static_deprecated() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED libshared_and_static_deprecated() const;
int libshared_and_static_not_exported() const;
int LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded() const;
};
class LIBSHARED_AND_STATIC_NO_EXPORT LibsharedAndStaticExcluded {
class MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT LibsharedAndStaticExcluded {
public:
int libshared_and_static() const;
int LIBSHARED_AND_STATIC_EXPORT libshared_and_static_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_EXPORT libshared_and_static_exported() const;
int LIBSHARED_AND_STATIC_DEPRECATED libshared_and_static_deprecated() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED libshared_and_static_deprecated() const;
int libshared_and_static_not_exported() const;
int LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded() const;
};
LIBSHARED_AND_STATIC_EXPORT int libshared_and_static_exported();
MYPREFIX_LIBSHARED_AND_STATIC_EXPORT int libshared_and_static_exported();
LIBSHARED_AND_STATIC_DEPRECATED_EXPORT int libshared_and_static_deprecated();
MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED_EXPORT int libshared_and_static_deprecated();
int libshared_and_static_not_exported();
int LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded();
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded();
#endif

View File

@ -1,33 +0,0 @@
macro(shared_variant_build_pass Source Message)
build_pass("libshared_and_static.h" "shared_variant" "lib_shared_and_static" "${Source}" ${Message})
endmacro()
macro(shared_variant_build_fail Source Message)
build_fail("libshared_and_static.h" "shared_variant" "lib_shared_and_static" "${Source}" ${Message})
endmacro()
macro(static_variant_build_pass Source Message)
build_pass("libshared_and_static.h" "static_variant" "lib_shared_and_static" "${Source}" ${Message})
endmacro()
macro(static_variant_build_fail Source Message)
build_fail("libshared_and_static.h" "static_variant" "lib_shared_and_static" "${Source}" ${Message})
endmacro()
static_variant_build_pass("return libshared_and_static_exported();" "Failed to build static variant")
shared_variant_build_pass("return libshared_and_static_exported();" "Failed to build shared variant")
# if (COMPILER_HAS_DEPRECATED)
# shared_variant_build_fail("return libshared_and_static_deprecated();" "Built shared deprecated variant")
# static_variant_build_fail("return libshared_and_static_deprecated();" "Built static deprecated variant")
# else()
# shared_variant_build_pass("return libshared_and_static_deprecated();" "Built shared deprecated variant")
# static_variant_build_pass("return libshared_and_static_deprecated();" "Built static deprecated variant")
# endif()
static_variant_build_pass("return libshared_and_static_not_exported();" "Failed to build static not exported variant")
if (WIN32 OR COMPILER_HAS_HIDDEN_VISIBILITY)
shared_variant_build_fail("return libshared_and_static_not_exported();" "Built shared not exported variant")
else()
shared_variant_build_pass("return libshared_and_static_not_exported();" "Built shared not exported variant")
endif()

View File

@ -1,45 +0,0 @@
macro(shared_build_pass Source Message)
build_pass("libshared.h" "libshared" "libshared" "${Source}" ${Message})
endmacro()
macro(shared_build_fail Source Message)
build_fail("libshared.h" "libshared" "libshared" "${Source}" ${Message})
endmacro()
shared_build_pass("Libshared l; return l.libshared_exported();" "Failed to build exported")
shared_build_pass("return libshared_exported();" "Failed to build exported function.")
# if (COMPILER_HAS_DEPRECATED)
# shared_build_fail("Libshared l; return l.libshared_deprecated();" "Built use of deprecated class method. This should not be possible.")
# else()
# shared_build_pass("Libshared l; return l.libshared_deprecated();" "Built use of deprecated class method. This should not be possible.")
# endif()
if (COMPILER_HAS_HIDDEN_VISIBILITY)
shared_build_fail("Libshared l; return l.libshared_excluded();" "Built use of excluded class method. This should not be possible.")
else()
# There is no MSVC equivalent to hiding symbols.
shared_build_pass("Libshared l; return l.libshared_excluded();" "Built use of excluded class method. This is possible on MSVC.")
endif()
if (WIN32 OR COMPILER_HAS_HIDDEN_VISIBILITY)
shared_build_fail("LibsharedNotExported l; return l.libshared();" "Built use of not-exported class method. This should not be possible.")
shared_build_fail("LibsharedNotExported l; return l.libshared_not_exported();" "Built use of not-exported class method. This should not be possible.")
shared_build_fail("LibsharedNotExported l; return l.libshared_excluded();" "Built use of not-exported class method. This should not be possible.")
shared_build_fail("LibsharedExcluded l; return l.libshared();" "Built use of excluded class method. This should not be possible.")
shared_build_fail("LibsharedExcluded l; return l.libshared_not_exported();" "Built use of excluded class method. This should not be possible.")
shared_build_fail("LibsharedExcluded l; return l.libshared_excluded();" "Built use of excluded class method. This should not be possible.")
shared_build_fail("return libshared_excluded();" "Built use of excluded function. This should not be possible.")
shared_build_fail("return libshared_not_exported();" "Built use of not-exported function. This should not be possible.")
else()
shared_build_pass("LibsharedNotExported l; return l.libshared();" "Built use of not-exported class method.")
shared_build_pass("LibsharedNotExported l; return l.libshared_not_exported();" "Built use of not-exported class method.")
shared_build_pass("LibsharedNotExported l; return l.libshared_excluded();" "Built use of not-exported class method.")
shared_build_pass("LibsharedExcluded l; return l.libshared();" "Built use of excluded class method.")
shared_build_pass("LibsharedExcluded l; return l.libshared_not_exported();" "Built use of excluded class method.")
shared_build_pass("LibsharedExcluded l; return l.libshared_excluded();" "Built use of excluded class method.")
shared_build_pass("return libshared_excluded();" "Built use of excluded function.")
shared_build_pass("return libshared_not_exported();" "Built use of not-exported function.")
endif()

View File

@ -1,18 +0,0 @@
macro(static_build_pass Source Message)
build_pass("libstatic.h" "libstatic" "libstatic" "${Source}" ${Message})
endmacro()
macro(static_build_fail Source Message)
build_fail("libstatic.h" "libstatic" "libstatic" "${Source}" ${Message})
endmacro()
static_build_pass("Libstatic l; return l.libstatic_exported();" "Failed to build exported.")
# if (COMPILER_HAS_DEPRECATED)
# static_build_fail("Libstatic l; return l.libstatic_deprecated();" "Built use of deprecated class method. This should not be possible.")
# static_build_fail("libstatic_deprecated();" "Built use of deprecated function. This should not be possible.")
# else()
# static_build_pass("Libstatic l; return l.libstatic_deprecated();" "Built use of deprecated class method. This should not be possible.")
# static_build_pass("libstatic_deprecated();" "Built use of deprecated function. This should not be possible.")
# endif()

View File

@ -1,11 +0,0 @@
project(override_symbol)
add_library(somelib SHARED someclass.cpp)
set_target_properties(somelib PROPERTIES DEFINE_SYMBOL SOMELIB_MAKEDLL)
generate_export_header(somelib)
add_executable(consumer main.cpp)
target_link_libraries(consumer somelib)

View File

@ -1,9 +0,0 @@
#include "someclass.h"
int main(int, char**)
{
SomeClass sc;
sc.someMethod();
return 0;
}

View File

@ -1,7 +0,0 @@
#include "someclass.h"
void SomeClass::someMethod() const
{
}

View File

@ -1,8 +0,0 @@
#include "somelib_export.h"
class SOMELIB_EXPORT SomeClass
{
public:
void someMethod() const;
};

View File

@ -1,15 +0,0 @@
project(use_prefix)
set(use_prefix_lib_SRCS
useprefixclass.cpp
)
add_library(use_prefix_lib SHARED useprefixclass.cpp)
generate_export_header(use_prefix_lib
PREFIX_NAME MYPREFIX_
)
add_executable(use_prefix main.cpp)
target_link_libraries(use_prefix use_prefix_lib)

View File

@ -1,8 +0,0 @@
#include "useprefixclass.h"
int main(int argc, char **argv)
{
UsePrefixClass upc;
return upc.someMethod();
}

View File

@ -1,7 +0,0 @@
#include "useprefixclass.h"
int UsePrefixClass::someMethod() const
{
return 0;
}

View File

@ -1,13 +0,0 @@
#ifndef USEPREFIXCLASS_H
#define USEPREFIXCLASS_H
#include "use_prefix_lib_export.h"
class MYPREFIX_USE_PREFIX_LIB_EXPORT UsePrefixClass
{
public:
int someMethod() const;
};
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSHARED_EXPORT_H
#define LIBSHARED_EXPORT_H
#ifdef LIBSHARED_STATIC_DEFINE
# define LIBSHARED_EXPORT
# define LIBSHARED_NO_EXPORT
#else
# ifndef LIBSHARED_EXPORT
# ifdef libshared_EXPORTS
/* We are building this library */
# define LIBSHARED_EXPORT
# else
/* We are using this library */
# define LIBSHARED_EXPORT
# endif
# endif
# ifndef LIBSHARED_NO_EXPORT
# define LIBSHARED_NO_EXPORT
# endif
#endif
#ifndef LIBSHARED_DEPRECATED
# define LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_EXPORT
# define LIBSHARED_DEPRECATED_EXPORT LIBSHARED_EXPORT LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_NO_EXPORT
# define LIBSHARED_DEPRECATED_NO_EXPORT LIBSHARED_NO_EXPORT LIBSHARED_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSHARED_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSTATIC_EXPORT_H
#define LIBSTATIC_EXPORT_H
#ifdef LIBSTATIC_STATIC_DEFINE
# define LIBSTATIC_EXPORT
# define LIBSTATIC_NO_EXPORT
#else
# ifndef LIBSTATIC_EXPORT
# ifdef libstatic_EXPORTS
/* We are building this library */
# define LIBSTATIC_EXPORT
# else
/* We are using this library */
# define LIBSTATIC_EXPORT
# endif
# endif
# ifndef LIBSTATIC_NO_EXPORT
# define LIBSTATIC_NO_EXPORT
# endif
#endif
#ifndef LIBSTATIC_DEPRECATED
# define LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_EXPORT
# define LIBSTATIC_DEPRECATED_EXPORT LIBSTATIC_EXPORT LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_NO_EXPORT
# define LIBSTATIC_DEPRECATED_NO_EXPORT LIBSTATIC_NO_EXPORT LIBSTATIC_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSTATIC_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSHARED_EXPORT_H
#define LIBSHARED_EXPORT_H
#ifdef LIBSHARED_STATIC_DEFINE
# define LIBSHARED_EXPORT
# define LIBSHARED_NO_EXPORT
#else
# ifndef LIBSHARED_EXPORT
# ifdef libshared_EXPORTS
/* We are building this library */
# define LIBSHARED_EXPORT __declspec(dllexport)
# else
/* We are using this library */
# define LIBSHARED_EXPORT __declspec(dllimport)
# endif
# endif
# ifndef LIBSHARED_NO_EXPORT
# define LIBSHARED_NO_EXPORT
# endif
#endif
#ifndef LIBSHARED_DEPRECATED
# define LIBSHARED_DEPRECATED __attribute__ ((__deprecated__))
#endif
#ifndef LIBSHARED_DEPRECATED_EXPORT
# define LIBSHARED_DEPRECATED_EXPORT LIBSHARED_EXPORT LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_NO_EXPORT
# define LIBSHARED_DEPRECATED_NO_EXPORT LIBSHARED_NO_EXPORT LIBSHARED_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSHARED_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSTATIC_EXPORT_H
#define LIBSTATIC_EXPORT_H
#ifdef LIBSTATIC_STATIC_DEFINE
# define LIBSTATIC_EXPORT
# define LIBSTATIC_NO_EXPORT
#else
# ifndef LIBSTATIC_EXPORT
# ifdef libstatic_EXPORTS
/* We are building this library */
# define LIBSTATIC_EXPORT
# else
/* We are using this library */
# define LIBSTATIC_EXPORT
# endif
# endif
# ifndef LIBSTATIC_NO_EXPORT
# define LIBSTATIC_NO_EXPORT
# endif
#endif
#ifndef LIBSTATIC_DEPRECATED
# define LIBSTATIC_DEPRECATED __attribute__ ((__deprecated__))
#endif
#ifndef LIBSTATIC_DEPRECATED_EXPORT
# define LIBSTATIC_DEPRECATED_EXPORT LIBSTATIC_EXPORT LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_NO_EXPORT
# define LIBSTATIC_DEPRECATED_NO_EXPORT LIBSTATIC_NO_EXPORT LIBSTATIC_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSTATIC_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSHARED_EXPORT_H
#define LIBSHARED_EXPORT_H
#ifdef LIBSHARED_STATIC_DEFINE
# define LIBSHARED_EXPORT
# define LIBSHARED_NO_EXPORT
#else
# ifndef LIBSHARED_EXPORT
# ifdef libshared_EXPORTS
/* We are building this library */
# define LIBSHARED_EXPORT __attribute__((visibility("default")))
# else
/* We are using this library */
# define LIBSHARED_EXPORT __attribute__((visibility("default")))
# endif
# endif
# ifndef LIBSHARED_NO_EXPORT
# define LIBSHARED_NO_EXPORT __attribute__((visibility("hidden")))
# endif
#endif
#ifndef LIBSHARED_DEPRECATED
# define LIBSHARED_DEPRECATED __attribute__ ((__deprecated__))
#endif
#ifndef LIBSHARED_DEPRECATED_EXPORT
# define LIBSHARED_DEPRECATED_EXPORT LIBSHARED_EXPORT LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_NO_EXPORT
# define LIBSHARED_DEPRECATED_NO_EXPORT LIBSHARED_NO_EXPORT LIBSHARED_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSHARED_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSTATIC_EXPORT_H
#define LIBSTATIC_EXPORT_H
#ifdef LIBSTATIC_STATIC_DEFINE
# define LIBSTATIC_EXPORT
# define LIBSTATIC_NO_EXPORT
#else
# ifndef LIBSTATIC_EXPORT
# ifdef libstatic_EXPORTS
/* We are building this library */
# define LIBSTATIC_EXPORT
# else
/* We are using this library */
# define LIBSTATIC_EXPORT
# endif
# endif
# ifndef LIBSTATIC_NO_EXPORT
# define LIBSTATIC_NO_EXPORT
# endif
#endif
#ifndef LIBSTATIC_DEPRECATED
# define LIBSTATIC_DEPRECATED __attribute__ ((__deprecated__))
#endif
#ifndef LIBSTATIC_DEPRECATED_EXPORT
# define LIBSTATIC_DEPRECATED_EXPORT LIBSTATIC_EXPORT LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_NO_EXPORT
# define LIBSTATIC_DEPRECATED_NO_EXPORT LIBSTATIC_NO_EXPORT LIBSTATIC_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSTATIC_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSHARED_EXPORT_H
#define LIBSHARED_EXPORT_H
#ifdef LIBSHARED_STATIC_DEFINE
# define LIBSHARED_EXPORT
# define LIBSHARED_NO_EXPORT
#else
# ifndef LIBSHARED_EXPORT
# ifdef libshared_EXPORTS
/* We are building this library */
# define LIBSHARED_EXPORT
# else
/* We are using this library */
# define LIBSHARED_EXPORT
# endif
# endif
# ifndef LIBSHARED_NO_EXPORT
# define LIBSHARED_NO_EXPORT
# endif
#endif
#ifndef LIBSHARED_DEPRECATED
# define LIBSHARED_DEPRECATED __attribute__ ((__deprecated__))
#endif
#ifndef LIBSHARED_DEPRECATED_EXPORT
# define LIBSHARED_DEPRECATED_EXPORT LIBSHARED_EXPORT LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_NO_EXPORT
# define LIBSHARED_DEPRECATED_NO_EXPORT LIBSHARED_NO_EXPORT LIBSHARED_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSHARED_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSTATIC_EXPORT_H
#define LIBSTATIC_EXPORT_H
#ifdef LIBSTATIC_STATIC_DEFINE
# define LIBSTATIC_EXPORT
# define LIBSTATIC_NO_EXPORT
#else
# ifndef LIBSTATIC_EXPORT
# ifdef libstatic_EXPORTS
/* We are building this library */
# define LIBSTATIC_EXPORT
# else
/* We are using this library */
# define LIBSTATIC_EXPORT
# endif
# endif
# ifndef LIBSTATIC_NO_EXPORT
# define LIBSTATIC_NO_EXPORT
# endif
#endif
#ifndef LIBSTATIC_DEPRECATED
# define LIBSTATIC_DEPRECATED __attribute__ ((__deprecated__))
#endif
#ifndef LIBSTATIC_DEPRECATED_EXPORT
# define LIBSTATIC_DEPRECATED_EXPORT LIBSTATIC_EXPORT LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_NO_EXPORT
# define LIBSTATIC_DEPRECATED_NO_EXPORT LIBSTATIC_NO_EXPORT LIBSTATIC_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSTATIC_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSHARED_EXPORT_H
#define LIBSHARED_EXPORT_H
#ifdef LIBSHARED_STATIC_DEFINE
# define LIBSHARED_EXPORT
# define LIBSHARED_NO_EXPORT
#else
# ifndef LIBSHARED_EXPORT
# ifdef libshared_EXPORTS
/* We are building this library */
# define LIBSHARED_EXPORT __declspec(dllexport)
# else
/* We are using this library */
# define LIBSHARED_EXPORT __declspec(dllimport)
# endif
# endif
# ifndef LIBSHARED_NO_EXPORT
# define LIBSHARED_NO_EXPORT
# endif
#endif
#ifndef LIBSHARED_DEPRECATED
# define LIBSHARED_DEPRECATED __declspec(deprecated)
#endif
#ifndef LIBSHARED_DEPRECATED_EXPORT
# define LIBSHARED_DEPRECATED_EXPORT LIBSHARED_EXPORT LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_NO_EXPORT
# define LIBSHARED_DEPRECATED_NO_EXPORT LIBSHARED_NO_EXPORT LIBSHARED_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSHARED_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSTATIC_EXPORT_H
#define LIBSTATIC_EXPORT_H
#ifdef LIBSTATIC_STATIC_DEFINE
# define LIBSTATIC_EXPORT
# define LIBSTATIC_NO_EXPORT
#else
# ifndef LIBSTATIC_EXPORT
# ifdef libstatic_EXPORTS
/* We are building this library */
# define LIBSTATIC_EXPORT
# else
/* We are using this library */
# define LIBSTATIC_EXPORT
# endif
# endif
# ifndef LIBSTATIC_NO_EXPORT
# define LIBSTATIC_NO_EXPORT
# endif
#endif
#ifndef LIBSTATIC_DEPRECATED
# define LIBSTATIC_DEPRECATED __declspec(deprecated)
#endif
#ifndef LIBSTATIC_DEPRECATED_EXPORT
# define LIBSTATIC_DEPRECATED_EXPORT LIBSTATIC_EXPORT LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_NO_EXPORT
# define LIBSTATIC_DEPRECATED_NO_EXPORT LIBSTATIC_NO_EXPORT LIBSTATIC_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSTATIC_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSHARED_EXPORT_H
#define LIBSHARED_EXPORT_H
#ifdef LIBSHARED_STATIC_DEFINE
# define LIBSHARED_EXPORT
# define LIBSHARED_NO_EXPORT
#else
# ifndef LIBSHARED_EXPORT
# ifdef libshared_EXPORTS
/* We are building this library */
# define LIBSHARED_EXPORT __declspec(dllexport)
# else
/* We are using this library */
# define LIBSHARED_EXPORT __declspec(dllimport)
# endif
# endif
# ifndef LIBSHARED_NO_EXPORT
# define LIBSHARED_NO_EXPORT
# endif
#endif
#ifndef LIBSHARED_DEPRECATED
# define LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_EXPORT
# define LIBSHARED_DEPRECATED_EXPORT LIBSHARED_EXPORT LIBSHARED_DEPRECATED
#endif
#ifndef LIBSHARED_DEPRECATED_NO_EXPORT
# define LIBSHARED_DEPRECATED_NO_EXPORT LIBSHARED_NO_EXPORT LIBSHARED_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSHARED_NO_DEPRECATED
#endif
#endif

View File

@ -0,0 +1,41 @@
#ifndef LIBSTATIC_EXPORT_H
#define LIBSTATIC_EXPORT_H
#ifdef LIBSTATIC_STATIC_DEFINE
# define LIBSTATIC_EXPORT
# define LIBSTATIC_NO_EXPORT
#else
# ifndef LIBSTATIC_EXPORT
# ifdef libstatic_EXPORTS
/* We are building this library */
# define LIBSTATIC_EXPORT
# else
/* We are using this library */
# define LIBSTATIC_EXPORT
# endif
# endif
# ifndef LIBSTATIC_NO_EXPORT
# define LIBSTATIC_NO_EXPORT
# endif
#endif
#ifndef LIBSTATIC_DEPRECATED
# define LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_EXPORT
# define LIBSTATIC_DEPRECATED_EXPORT LIBSTATIC_EXPORT LIBSTATIC_DEPRECATED
#endif
#ifndef LIBSTATIC_DEPRECATED_NO_EXPORT
# define LIBSTATIC_DEPRECATED_NO_EXPORT LIBSTATIC_NO_EXPORT LIBSTATIC_DEPRECATED
#endif
#define DEFINE_NO_DEPRECATED 0
#if DEFINE_NO_DEPRECATED
# define LIBSTATIC_NO_DEPRECATED
#endif
#endif

View File

@ -1,17 +0,0 @@
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
if (CMAKE_CXX_FLAGS MATCHES "-fvisibility=hidden")
message(SEND_ERROR "Do not use add_compiler_export_flags before adding this directory")
endif()
if (CMAKE_CXX_FLAGS MATCHES "-fvisibility-inlines-hidden")
message(SEND_ERROR "Do not use add_compiler_export_flags before adding this directory")
endif()
add_library(visibility_preset SHARED visibility_preset.cpp)
generate_export_header(visibility_preset)
add_executable(visibility_preset_exe main.cpp)
target_link_libraries(visibility_preset_exe visibility_preset)

View File

@ -1,9 +0,0 @@
#include "visibility_preset.h"
int main()
{
VisibilityPreset vp;
vp.someMethod();
return 0;
}

View File

@ -1,7 +0,0 @@
#include "visibility_preset.h"
void VisibilityPreset::someMethod()
{
}

View File

@ -1,13 +0,0 @@
#ifndef VISIBILITY_PRESET_H
#define VISIBILITY_PRESET_H
#include "visibility_preset_export.h"
class VISIBILITY_PRESET_EXPORT VisibilityPreset
{
public:
void someMethod();
};
#endif