Skip to content

Commit 618d382

Browse files
committed
launcherlib: Fix "different visibility" warning including GenerateExportHeader
This commit is an attempt to "different visibility" warning [1]. By including "GenerateExportHeader" header, it automatically run the try_compile checking if compiler support "visibility" flags and set option "USE_COMPILER_HIDDEN_VISIBILITY" to ON if it makes sense. [...] -- Checking to see if CXX compiler accepts flag -fvisibility=hidden -- Checking to see if CXX compiler accepts flag -fvisibility=hidden - yes -- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY -- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success -- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY -- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success -- Performing Test COMPILER_HAS_DEPRECATED_ATTR -- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success [...]
1 parent 714ef57 commit 618d382

File tree

3 files changed

+26
-29
lines changed

3 files changed

+26
-29
lines changed

Base/ctkAppLauncherSettings.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
#include <QObject>
66
#include <QHash>
77

8+
// CTK includes
9+
#include "CTKAppLauncherLibExport.h"
10+
811
class ctkAppLauncherSettingsPrivate;
912

1013
///
@@ -129,7 +132,7 @@ class ctkAppLauncherSettingsPrivate;
129132
/// qDebug() << appLauncherSettings.envVars().value("FOO");
130133
/// \endcode
131134
///
132-
class ctkAppLauncherSettings : public QObject
135+
class CTKAPPLAUNCHERLIB_EXPORT ctkAppLauncherSettings : public QObject
133136
{
134137
Q_OBJECT
135138
public:

Base/ctkSettingsHelper.h

+11-4
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,30 @@
55
#include <QHash>
66
#include <QString>
77

8+
// CTK includes
9+
#include "CTKAppLauncherLibExport.h"
10+
811
class QSettings;
912
class QStringList;
1013

1114
namespace ctk {
1215

1316
/// Read list of value stored in an array into a QStringList
14-
QStringList readArrayValues(QSettings& settings, const QString& arrayName, const QString fieldName);
17+
QStringList CTKAPPLAUNCHERLIB_EXPORT readArrayValues(
18+
QSettings& settings, const QString& arrayName, const QString fieldName);
1519

1620
/// Read list of value stored in a group into a QHash<QString, QString>
17-
QHash<QString, QString> readKeyValuePairs(QSettings& settings, const QString& groupName);
21+
QHash<QString, QString> CTKAPPLAUNCHERLIB_EXPORT readKeyValuePairs(
22+
QSettings& settings, const QString& groupName);
1823

1924
/// Write QStringList
20-
void writeArrayValues(QSettings& settings, const QStringList& values,
25+
void CTKAPPLAUNCHERLIB_EXPORT writeArrayValues(
26+
QSettings& settings, const QStringList& values,
2127
const QString& arrayName, const QString fieldName);
2228

2329
/// Write QHash<QString, QString>
24-
void writeKeyValuePairs(QSettings& settings,
30+
void CTKAPPLAUNCHERLIB_EXPORT writeKeyValuePairs(
31+
QSettings& settings,
2532
const QHash<QString, QString>& map, const QString& groupName);
2633

2734
} // end of ctk namespace

CMake/ctkMacroBuildLib.cmake

+11-24
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,15 @@
1818
#
1919
###########################################################################
2020

21-
#
22-
# Depends on:
23-
# <SOURCE>/CMake/ctkMacroParseArguments.cmake
24-
#
21+
include(GenerateExportHeader)
2522

2623
macro(ctkMacroBuildLib)
2724
set(prefix ${PROJECT_NAME})
2825
if(prefix STREQUAL "")
2926
message(SEND_ERROR "prefix should NOT be empty !")
3027
endif()
3128
set(options)
32-
set(oneValueArgs NAME EXPORT_DIRECTIVE LIBRARY_TYPE LABEL)
29+
set(oneValueArgs NAME LIBRARY_TYPE LABEL)
3330
set(multiValueArgs
3431
SRCS
3532
MOC_SRCS
@@ -51,30 +48,11 @@ macro(ctkMacroBuildLib)
5148
if(NOT DEFINED ${prefix}_LABEL)
5249
set(${prefix}_LABEL ${${prefix}_NAME})
5350
endif()
54-
if(NOT DEFINED ${prefix}_EXPORT_DIRECTIVE)
55-
if(${prefix}_LIBRARY_TYPE STREQUAL "SHARED")
56-
message(SEND_ERROR "EXPORT_DIRECTIVE is mandatory")
57-
endif()
58-
endif()
5951

6052
# Define library name
6153
set(lib_name ${${prefix}_NAME})
6254

6355
# --------------------------------------------------------------------------
64-
set(dynamicHeaders)
65-
if(${prefix}_LIBRARY_TYPE STREQUAL "SHARED")
66-
set(MY_LIBRARY_EXPORT_DIRECTIVE ${${prefix}_EXPORT_DIRECTIVE})
67-
set(MY_EXPORT_HEADER_PREFIX ${${prefix}_NAME})
68-
set(MY_LIBNAME ${lib_name})
69-
70-
configure_file(
71-
${CTK_SOURCE_DIR}/Libs/CTKExport.h.in
72-
${CMAKE_CURRENT_BINARY_DIR}/${MY_EXPORT_HEADER_PREFIX}Export.h
73-
)
74-
set(dynamicHeaders
75-
"${dynamicHeaders};${CMAKE_CURRENT_BINARY_DIR}/${MY_EXPORT_HEADER_PREFIX}Export.h")
76-
endif()
77-
7856
# Make sure variable are cleared
7957
set(${prefix}_MOC_CXX)
8058
set(${prefix}_UI_CXX)
@@ -130,6 +108,15 @@ macro(ctkMacroBuildLib)
130108
)
131109
endforeach()
132110

111+
# Export header
112+
generate_export_header(${lib_name}
113+
BASE_NAME ${lib_name}
114+
EXPORT_FILE_NAME ${lib_name}Export.h
115+
)
116+
set(dynamicHeaders
117+
${CMAKE_CURRENT_BINARY_DIR}/${lib_name}Export.h
118+
)
119+
133120
# Install headers
134121
if(CTKAppLauncher_INSTALL_LauncherLibrary)
135122
file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")

0 commit comments

Comments
 (0)