CMake: Build lmms shared library instead of object library

Resolves some inexplicable linking errors on Windows. Saves us from
working around incomplete CMake support of object libraries.
This commit is contained in:
Lukas W
2020-05-22 17:20:08 +02:00
parent ac0081de10
commit 846ca178f5
19 changed files with 80 additions and 123 deletions

View File

@@ -30,7 +30,7 @@
#include "Track.h"
class AutomationTrack : public Track
class LMMS_EXPORT AutomationTrack : public Track
{
Q_OBJECT
public:

View File

@@ -31,13 +31,14 @@
#include <QtCore/QMap>
#include <QStaticText>
#include "lmms_export.h"
#include "Track.h"
class TrackLabelButton;
class TrackContainer;
class BBTCO : public TrackContentObject
class LMMS_EXPORT BBTCO : public TrackContentObject
{
public:
BBTCO( Track * _track );

View File

@@ -25,6 +25,7 @@
#ifndef MAINAPPLICATION_H
#define MAINAPPLICATION_H
#include "lmms_export.h"
#include "lmmsconfig.h"
#include <QApplication>
@@ -35,7 +36,7 @@
#endif
#if defined(LMMS_BUILD_WIN32)
class MainApplication : public QApplication, public QAbstractNativeEventFilter
class LMMS_EXPORT MainApplication : public QApplication, public QAbstractNativeEventFilter
#else
class MainApplication : public QApplication
#endif

View File

@@ -25,6 +25,8 @@
#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H
#include "lmms_export.h"
#include <QtCore/QBasicTimer>
#include <QtCore/QTimer>
#include <QtCore/QList>
@@ -43,7 +45,7 @@ class PluginView;
class ToolButton;
class MainWindow : public QMainWindow
class LMMS_EXPORT MainWindow : public QMainWindow
{
Q_OBJECT
public:
@@ -61,7 +63,7 @@ public:
void addSpacingToToolBar( int _size );
// wrap the widget with a window decoration and add it to the workspace
LMMS_EXPORT SubWindow* addWindowedWidget(QWidget *w, Qt::WindowFlags windowFlags=0);
SubWindow* addWindowedWidget(QWidget *w, Qt::WindowFlags windowFlags=0);
///

View File

@@ -54,7 +54,7 @@ static MemoryManager::MmCounter _mm_counter;
static thread_local MemoryManager::MmCounter _mm_thread_counter;
template<typename T>
class MmAllocator
class LMMS_EXPORT MmAllocator
{
public:
MmAllocator() = default;

View File

@@ -14,10 +14,11 @@
#include <cstddef>
#include <memory>
#include "lmms_export.h"
class _MemoryPool_Private;
class LMMS_EXPORT _MemoryPool_Private;
class _MemoryPool_Base
class LMMS_EXPORT _MemoryPool_Base
{
public:
_MemoryPool_Base(size_t size, size_t nmemb);

View File

@@ -26,6 +26,7 @@
#define MIX_HELPERS_H
#include "lmms_basics.h"
#include "lmms_export.h"
class ValueBuffer;
namespace MixHelpers
@@ -35,7 +36,7 @@ bool isSilent( const sampleFrame* src, int frames );
bool useNaNHandler();
void setNaNHandler( bool use );
LMMS_EXPORT void setNaNHandler( bool use );
void clear(sampleFrame * src, int frames);
#ifndef LMMS_DISABLE_SURROUND

View File

@@ -27,10 +27,11 @@
#include <QFile>
#include "lmms_export.h"
#include "lmms_basics.h"
#include "MicroTimer.h"
class MixerProfiler
class LMMS_EXPORT MixerProfiler
{
public:
MixerProfiler();

View File

@@ -25,6 +25,8 @@
#ifndef MODELVISITOR_H
#define MODELVISITOR_H
#include "lmms_export.h"
class AutomatableModel;
class BoolModel;
class IntModel;
@@ -32,7 +34,7 @@ class FloatModel;
class ComboBoxModel;
class TempoSyncKnobModel;
class ModelVisitor
class LMMS_EXPORT ModelVisitor
{
template<class ParentType = AutomatableModel, class ModelType>
void up(ModelType& m) { visit(static_cast<ParentType&>(m)); }
@@ -46,7 +48,7 @@ public:
virtual ~ModelVisitor();
};
class ConstModelVisitor
class LMMS_EXPORT ConstModelVisitor
{
template<class ParentType = AutomatableModel, class ModelType>
void up(const ModelType& m) {

View File

@@ -28,12 +28,13 @@
#define PROJECT_VERSION_H
#include <QtCore/QString>
#include "lmms_export.h"
/*! \brief Version number parsing and comparison
*
* Parses and compares version information. i.e. "1.0.3" < "1.0.10"
*/
class ProjectVersion
class LMMS_EXPORT ProjectVersion
{
public:
enum CompareType { Major, Minor, Release, Stage, Build };

View File

@@ -32,7 +32,7 @@
#include "OutputSettings.h"
class RenderManager : public QObject
class LMMS_EXPORT RenderManager : public QObject
{
Q_OBJECT
public: