-
Thanks very much for making Geogram generally available. I am considering using Geogram to replace the CSG (Boolean operation) capability in my program. We have a hand-grown CSG engine that was developed long before modern ideas of robust geometry. It has worked for us, but as my application evolves, the importance of robustness increases. I think it will be easier to switch to a well developed and maintained library than make our own tool robust, so I'm considering Geogram. Geogram is also attractive for me because it seems to work in a similar manner as our current approach -- where some of the alternatives have limitations that are proving challenging to work around. I'm trying to use CMake to build. I mainly develop on MacOS, but eventually need to support (at least) Mac, Windows, and Linux. I generally build dependencies using CMake's ExternalProject_Add capability and then use FIND_PACKAGE to integrate the result into my project. Reading the CMake files, I see a bunch of build options that don't seem to be documented in the README's. I am attempting to build with the following options... BUILD_SHARED_LIBS=OFF Unfortunately, despite BUILD_SHARED_LIBS, Geogram only appears to build a dynamic library. Is it currently possible to build Geogram as a static library? I strongly prefer to build It is not clear what functionality is lost when building with LUA, TRIANGLE, and TETGEN=OFF is enabled. Do these options cause Geogram to revert to internal alternatives, or are certain features disabled? I was very surprised to find how much stuff was bundled as third_party libraries. I would normally expect to see these kinds of dependencies listed in the top level README's. I would also prefer to see them made optional if possible (don't use at all, use Geogram bundled library, or use external provided library) -- if they are mandatory, I would still like to see options (use Geogram bundled library, or use external provided library). For example, my project already uses several of the dependencies bundled as third_party. I don't want to carry two copies of these dependencies in my program and I also don't want to convert everything to use the one bundled by a dependency. When I read 'Geogram comes "with batteries installed" (nearly no external dependancies)', I thought this meant that dependencies were avoided, not that they were all rolled in together. I know that it would complicate your build process considerably, but I would encourage you to make building Geogram as a library as modular as possible. For example, I suspect that my application currently has no need for the 'image' and 'parameterization' components. If the library was built in components - or if there were a pick-and-choose build options - then I suspect I would be able to just include what I needed from Geogram and shed a few nested dependencies while I'm at it. |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 1 reply
-
Thank you very much for your feedback !
That said, I am very interested in your feedback, and in your suggestions to facilitate using geogram for your project. I'll try to take into account what is a blocking point for you and make the build system evolve (as soon as it remains compatible with the constraints explained above, of course !) |
Beta Was this translation helpful? Give feedback.
-
Thanks for the awesome library! Just wanted to note that we are facing the same issue with static compilation. We follow the exact same path as @ramcdona and include geogram as an external project. But it always builds a shared library. Here are the options I am using in ExternalProject_Add. CMAKE_ARGS -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} |
Beta Was this translation helpful? Give feedback.
-
Yes, I have the same problem here, if I did not break smthg elsewhere, it seems that CMake's options to build shared libs or not have changed. I'll investigate... |
Beta Was this translation helpful? Give feedback.
-
I'm stupid ! (I had forgotten the way to use my own configuration scripts), in fact it works as follows, from the
To see the different possible platforms, use:
(under Linux, default platform is Hope this helps ! |
Beta Was this translation helpful? Give feedback.
-
I confirm that defining the VORPALINE_PLATFORM also solved the problem with the static compilation for externally added projects in Cmake too (tested with v1.8.6). Below is a working solution that I now included in our project: ExternalProject_Add(build_geogram CMAKE_ARGS -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} |
Beta Was this translation helpful? Give feedback.
I'm stupid ! (I had forgotten the way to use my own configuration scripts), in fact it works as follows, from the
configure.sh
script:To build static geogram libraries, do:
To see the different possible platforms, use:
(under Linux, default platform is
Linux64-gcc-dynamic
)Hope this helps !