K-3D / k3d

The main K-3D code repository
http://www.k-3d.org/
GNU General Public License v2.0
200 stars 51 forks source link

Build Problems of Some Modules with Release 0.8.0.5 #21

Closed aschet closed 8 years ago

aschet commented 8 years ago

I have recently tried to compile K-3D 0.8.0.5 on Arch Linux and encountered some problems during the compilation of certain modules. I use cmake 3.5.2 and gcc 6.1.1. By the way, it is now possible to install K-3D from the Arch User Repository: https://aur.archlinux.org/packages/k3d/

These are the specific modules:

Carve Module / carve 1.4.0

Compilation fails because the header mesh.hpp is not present in carve 1.4.0. Do you use an older carve version or a fork?

carve/mesh.hpp: File or directory missing #include <carve/mesh.hpp>

Google Perftools Module / gperftools 2.5

If the Perftools library is detected the default cmake run will fail because of this error message:

CMake Error at cmake/modules/K3DDependencies.cmake:14 (MESSAGE): K3D_BUILD_GOOGLE_PERFTOOLS_MODULE requires K3D_ENABLE_PROFILING. Call Stack (most recent call first): CMakeLists.txt:277 (K3D_CHECK)

Preferably this error should not occur thus the module will only be activated if K3D_ENABLE_PROFILING is enabled. When profiling is enabled the following error message will occour:

CMake Error at modules/CMakeLists.txt:76 (TARGET_LINK_LIBRARIES): Cannot specify link libraries for target "/usr/lib64/libprofiler.so" which is not built by this project. Call Stack (most recent call first): modules/3ds_io/CMakeLists.txt:3 (K3D_BUILD_MODULE)

Open CASCADE Module / Open CASCADE 6.9.1

Compilation fails because the file gprim_factory.h seems no longer be part of K-3D.

/home/thomas/abs/k3d/src/k3d/modules/opencascade/opencascade_document_importer.cpp:34:34: fatal error k3dsdk/gprim_factory.h: File or directory missing #include <k3dsdk/gprim_factory.h>

Collada IO Module / collada-dom 2.4

Module seems no longer to be compile against current library version. Missing namespace usage and a type incompatibility problem.

Aqsis Module / aqsis 1.8.2

When compiling Aqsis from source it doesn't seem to include cmake package information so find_package will fail during cmake configuration.

barche commented 8 years ago

OK, thanks for the report. I'll look into these later this week, when I'm back at my development machine.

I think for Carve I took a more recent snapshot than the 1.4 release. I'll look into compiling against the latest from https://github.com/folded/carve

The other ones I haven't tried in ages, most likely severe code rot. Perftools hasn't been updated for the move from google to gperftools for sure.

barche commented 8 years ago

Regarding CARVE: I have verified that it compiles with the latest version on github, though for best results the Boost containers should be switched off. I had to make a pull request to CARVE for this to work: https://github.com/folded/carve/pull/80

barche commented 8 years ago

Profiling is fixed. The Collada and OpenCASCADE modules are quite hopelessly outdated, do you need them or should I just mark them deprecated?

aschet commented 8 years ago

Thanks for the further investigations, updates and fixes. I do not require the Collada or OpenCASCADE module. Since they would require a substantial rewrite it's probably the best option to deprecate them now and only reimplement them if it's a highly requested feature.

barche commented 8 years ago

I just removed OpenCascade. I'll check how easy it is to resurrect Collada. In the mean time Arch switched to Glew 2.0, that is now also supported.

barche commented 8 years ago

Regarding the Aqsis plugin: I had to refresh my memory, but this one only works after setting Aqsis_DIR in CMake to the aqsis build directory and Aqsis_SRC_INCL_DIR must be added manually as CMake variable and set to the include directory in the Aqsis source tree. Even then, it will only work in conjunction with the extremely incomplete QTUI experiment, compilation of which is disabled by default.

The plugin in question was meant to display rendering progress in a panel embedded in the GUI. For normal rendering, just having aqsis in the path should work.

I think this addresses all your comments (feel free to reopen if not), thanks for taking the time to report this!