Make compilation work on MinGW
ClosedPublic

Authored by wojnilowicz on Feb 22 2018, 7:32 PM.

Diff Detail

Repository
R261 KMyMoney
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
wojnilowicz requested review of this revision.Feb 22 2018, 7:32 PM
wojnilowicz created this revision.
tbaumgart requested changes to this revision.Feb 22 2018, 8:49 PM

Unfortunately, I get the following errors on my Linux box:

/home/thb/devel/kmymoney/build> make -j8
[  1%] Automatic moc for target kgpgfile
[  1%] Automatic moc for target xea2kmt
:
:
[ 78%] Built target mymoneysplit-test
[ 78%] Built target mymoneyaccount-test
[ 78%] Built target onlinejobadministration-test
[ 79%] Built target mymoneyprice-test
CMakeFiles/gncimporter.dir/mymoneygncreader.cpp.o: In function `MyMoneyGncReader':
/home/thb/devel/kmymoney/kmymoney/plugins/gnc/import/mymoneygncreader.cpp:1267: undefined reference to `IMyMoneyOperationsFormat::IMyMoneyOperationsFormat()'
/home/thb/devel/kmymoney/kmymoney/plugins/gnc/import/mymoneygncreader.cpp:1301: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
CMakeFiles/gncimporter.dir/mymoneygncreader.cpp.o: In function `~MyMoneyGncReader':
/home/thb/devel/kmymoney/kmymoney/plugins/gnc/import/mymoneygncreader.cpp:1304: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
CMakeFiles/gncimporter.dir/mymoneygncreader.cpp.o:(.data.rel.ro+0xaa0): undefined reference to `typeinfo for IMyMoneyOperationsFormat'
[ 79%] Built target kbanking_dialogs
[ 79%] Built target chart-test
[ 79%] Built target pivotgrid-test
clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)
kmymoney/plugins/gnc/import/CMakeFiles/gncimporter.dir/build.make:235: recipe for target 'kmymoney/plugins/gnc/import/gncimporter.so' failed
make[2]: *** [kmymoney/plugins/gnc/import/gncimporter.so] Error 1
CMakeFiles/Makefile2:5242: recipe for target 'kmymoney/plugins/gnc/import/CMakeFiles/gncimporter.dir/all' failed
make[1]: *** [kmymoney/plugins/gnc/import/CMakeFiles/gncimporter.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 79%] Built target pivottable-test
[ 80%] Built target querytable-test
[ 83%] Built target newaccountwizard
CMakeFiles/sqlstorage.dir/mymoneystoragesql.cpp.o: In function `MyMoneyStorageSql':
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:36: undefined reference to `IMyMoneyOperationsFormat::IMyMoneyOperationsFormat()'
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:42: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
CMakeFiles/sqlstorage.dir/mymoneystoragesql.cpp.o: In function `~MyMoneyStorageSql':
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:53: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:53: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
CMakeFiles/sqlstorage.dir/mymoneystoragesql.cpp.o: In function `QHash<MyMoneyStandardAccounts::idNameE, QString>::value(MyMoneyStandardAccounts::idNameE const&) const':
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
CMakeFiles/sqlstorage.dir/mymoneystoragesql.cpp.o:(.data.rel.ro+0x58): undefined reference to `typeinfo for IMyMoneyOperationsFormat'
CMakeFiles/mymoneystoragemgr-test.dir/mymoneystoragemgr-test.cpp.o: In function `QHash<MyMoneyStandardAccounts::idNameE, QString>::value(MyMoneyStandardAccounts::idNameE const&) const':
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)
kmymoney/plugins/sql/CMakeFiles/sqlstorage.dir/build.make:262: recipe for target 'kmymoney/plugins/sql/sqlstorage.so' failed
make[2]: *** [kmymoney/plugins/sql/sqlstorage.so] Error 1
CMakeFiles/Makefile2:6283: recipe for target 'kmymoney/plugins/sql/CMakeFiles/sqlstorage.dir/all' failed
make[1]: *** [kmymoney/plugins/sql/CMakeFiles/sqlstorage.dir/all] Error 2
CMakeFiles/mymoneydatabasemgr-test.dir/mymoneydatabasemgr-test.cpp.o: In function `QHash<MyMoneyStandardAccounts::idNameE, QString>::value(MyMoneyStandardAccounts::idNameE const&) const':
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
CMakeFiles/mymoneyfile-test.dir/mymoneyfile-test.cpp.o: In function `QHash<MyMoneyStandardAccounts::idNameE, QString>::value(MyMoneyStandardAccounts::idNameE const&) const':
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)
kmymoney/mymoney/storage/tests/CMakeFiles/mymoneystoragemgr-test.dir/build.make:132: recipe for target 'kmymoney/mymoney/storage/tests/mymoneystoragemgr-test' failed
make[2]: *** [kmymoney/mymoney/storage/tests/mymoneystoragemgr-test] Error 1
CMakeFiles/Makefile2:752: recipe for target 'kmymoney/mymoney/storage/tests/CMakeFiles/mymoneystoragemgr-test.dir/all' failed
make[1]: *** [kmymoney/mymoney/storage/tests/CMakeFiles/mymoneystoragemgr-test.dir/all] Error 2
clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)
kmymoney/mymoney/tests/CMakeFiles/mymoneyfile-test.dir/build.make:131: recipe for target 'kmymoney/mymoney/tests/mymoneyfile-test' failed
make[2]: *** [kmymoney/mymoney/tests/mymoneyfile-test] Error 1
CMakeFiles/Makefile2:1279: recipe for target 'kmymoney/mymoney/tests/CMakeFiles/mymoneyfile-test.dir/all' failed
make[1]: *** [kmymoney/mymoney/tests/CMakeFiles/mymoneyfile-test.dir/all] Error 2
libsqlstoragestatic.a(mymoneystoragesql.cpp.o): In function `MyMoneyStorageSql':
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:36: undefined reference to `IMyMoneyOperationsFormat::IMyMoneyOperationsFormat()'
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:42: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
libsqlstoragestatic.a(mymoneystoragesql.cpp.o): In function `~MyMoneyStorageSql':
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:53: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
/home/thb/devel/kmymoney/kmymoney/plugins/sql/mymoneystoragesql.cpp:53: undefined reference to `IMyMoneyOperationsFormat::~IMyMoneyOperationsFormat()'
libsqlstoragestatic.a(mymoneystoragesql.cpp.o): In function `QHash<MyMoneyStandardAccounts::idNameE, QString>::value(MyMoneyStandardAccounts::idNameE const&) const':
/usr/include/qt5/QtCore/qhash.h:592: undefined reference to `MyMoneyStandardAccounts::stdAccNames'
libsqlstoragestatic.a(mymoneystoragesql.cpp.o):(.data.rel.ro+0x58): undefined reference to `typeinfo for IMyMoneyOperationsFormat'
clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)
kmymoney/plugins/sql/tests/CMakeFiles/mymoneydatabasemgr-test.dir/build.make:128: recipe for target 'kmymoney/plugins/sql/tests/mymoneydatabasemgr-test' failed
CMakeFiles/Makefile2:6630: recipe for target 'kmymoney/plugins/sql/tests/CMakeFiles/mymoneydatabasemgr-test.dir/all' failed
Makefile:127: recipe for target 'all' failed
make[2]: *** [kmymoney/plugins/sql/tests/mymoneydatabasemgr-test] Error 1
make[1]: *** [kmymoney/plugins/sql/tests/CMakeFiles/mymoneydatabasemgr-test.dir/all] Error 2
make: *** [all] Error 2
*** Failure: Exit code 2 ***
This revision now requires changes to proceed.Feb 22 2018, 8:49 PM
habacker added inline comments.
kmymoney/icons/icons.cpp
309

QT apps provides Q_OS_WIN for that

Exported some more objects to allow compilation.

wojnilowicz added inline comments.Feb 23 2018, 3:03 PM
kmymoney/icons/icons.cpp
309

I would use Q_OS_WIN, but I see no advantage in doing that now, because it gives me nothing and requires testing on my part. Anyhow, it's good to know for future.

tbaumgart accepted this revision.Feb 23 2018, 4:43 PM

In my opinion you should use Q_OS_WIN instead of _WIN32 even though it does not make a difference for you right now. It would serve as a better example though. BTW: it now compiles and builds for me.

This revision is now accepted and ready to land.Feb 23 2018, 4:43 PM
This revision was automatically updated to reflect the committed changes.