tcobbs/ldview

Unable to build LDView on xUbuntu 20.04

Closed this issue · 1 comments

Hi,

I am using xUbuntu 20.04 and have some problems building LDview.

$ qmake --version
QMake version 3.1
Using Qt version 5.12.8 in /usr/lib/x86_64-linux-gnu

When doing make:

$ make
...
g++  -o LDView .obj-qt5/QTMain.o .obj-qt5/ModelViewerWidget.o .obj-qt5/Preferences.o .obj-qt5/LDViewErrors.o .obj-qt5/LDViewExtraDir.o .obj-qt5/AlertHandler.o .obj-qt5/LDViewSnapshotSettings.o .obj-qt5/LDViewPartList.o .obj-qt5/misc.o .obj-qt5/LDViewJpegOptions.o .obj-qt5/LDViewModelTree.o .obj-qt5/LDViewBoundingBox.o .obj-qt5/LDViewMainWindow.o .obj-qt5/LDViewLatitudeLongitude.o .obj-qt5/LDViewMpdModel.o .obj-qt5/LDViewExportOption.o .obj-qt5/LDViewCustomizeToolbar.o .obj-qt5/SnapshotTaker.o .obj-qt5/SnapshotAlertHandler.o .obj-qt5/qrc_resources.o .obj-qt5/moc_ModelViewerWidget.o .obj-qt5/moc_Preferences.o .obj-qt5/moc_LDViewErrors.o .obj-qt5/moc_LDViewExtraDir.o .obj-qt5/moc_LDViewPartList.o .obj-qt5/moc_LDViewJpegOptions.o .obj-qt5/moc_LDViewSnapshotSettings.o .obj-qt5/moc_LDViewModelTree.o .obj-qt5/moc_LDViewLatitudeLongitude.o .obj-qt5/moc_LDViewMpdModel.o .obj-qt5/moc_LDViewExportOption.o .obj-qt5/moc_LDViewMainWindow.o .obj-qt5/moc_About.o .obj-qt5/moc_LDViewCustomizeToolbar.o   -L../TCFoundation -L../LDLib -L../LDLoader -L../TRE -L../boost/lib -lLDraw-qt5 -L../LDExporter -lX11 -lLDLoader-qt5 -lTRE-qt5 -lTCFoundation-qt5 -lz -ljpeg -lpng -lGLU -lgl2ps -lLDExporter-qt5 -ltinyxml -L../lib -l3ds -lpthread /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so /usr/lib/x86_64-linux-gnu/libQt5PrintSupport.so /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Core.so   
/usr/bin/ld: skipping incompatible ../lib/lib3ds.a when searching for -l3ds
/usr/bin/ld: ../LDExporter/libLDExporter-qt5.a(LD3dsExporter.o): in function `LD3dsExporter::doExport2(LDLModel*, Lib3dsNode*, float const*, int, bool, bool, bool)':
/home/nine/ldview/LDExporter/LD3dsExporter.cpp:325: undefined reference to `lib3ds_mesh_resize_vertices'
/usr/bin/ld: /home/nine/ldview/LDExporter/LD3dsExporter.cpp:328: undefined reference to `lib3ds_mesh_resize_faces'

I poked around and found the issue is linker trying to link with lib3ds.a instead of lib3ds-64.a

Using some message on Ldview.pro I printed the values of QT_ARCH and QMAKE_PLATFORM on identifier unix :

QT_ARCH: x86_64
QMAKE_PLATFORM: linux unix posix

So I did a change on LDView.pro :

diff --git a/QT/LDView.pro b/QT/LDView.pro
index 6a7d00c8..8026b560 100644
--- a/QT/LDView.pro
+++ b/QT/LDView.pro
@@ -329,7 +329,7 @@ unix {
 	exists(../boost/lib/libboost_thread.a){
 		BOOSTLIB = ../boost/lib/libboost_thread.a
 	}
-   linux-g++-64{
+   contains(QT_ARCH, "x86_64") {
 		contains(DEFINES,EXPORT_3DS) {
 			LIBS += -l3ds-64
 		}

I don't have a 32 bit machine to validate if this has impact or not and I find strange only happen to me.

I am using only command lines to build qmake LDView.pro && make.

Please build the code with the following commands:

$ qmake -spec linux-g++-64
$ make