-
Notifications
You must be signed in to change notification settings - Fork 434
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added CMake support #231
base: master
Are you sure you want to change the base?
Added CMake support #231
Conversation
Great job... ^_^ Thank you @dbeef |
Is it better to build PoissonRecon independently without building libpng, libjpeg, zlib as static libries?? |
Those libraries are only there to support writing the implicit function (sampled on a grid) as an image in the case of 2D reconstruction. You can comment out that option in the code and then you won't need the libraries. |
However, if you do want to keep the image interface I would recommend keeping the libraries static. In particular, I believe the code was built using an older version of libpng and the newer version does not appear to be reverse compatible, so some of the function calls won't be declared/defined. |
How did you manage to compile file https://github.com/mkazhdan/PoissonRecon/blob/master/Src/VertexFactory.inl and https://github.com/mkazhdan/PoissonRecon/blob/master/Src/PNG.inl ? I failed to compile https://github.com/mkazhdan/PoissonRecon/blob/master/Src/VertexFactory.inl at coords[idx] , 10 occurences, with the following ERROR messages: [ 50%] Building CXX object CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o
/usr/bin/c++ -O3 -DNDEBUG -DRELEASE -Ofast -funroll-loops -ffast-math -Wno-deprecated -Wno-invalid-offsetof -Wno-dangling-else -fPIE -std=c++14 -MD -MT CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o -MF CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o.d -o CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o -c ....../poisson-recon/Src/PoissonRecon.cpp
In file included from /usr/include/unistd.h:226,
from /usr/include/x86_64-linux-gnu/bits/sigstksz.h:24,
from /usr/include/signal.h:328,
from ....../poisson-recon/Src/MyMiscellany.h:250,
from ....../poisson-recon/Src/PoissonRecon.cpp:44:
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::PositionFactory<Real, Dim>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:185:138: error: ‘idx’ is not a constant expression
185 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::PositionFactory<Real, Dim>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:191:138: error: ‘idx’ is not a constant expression
191 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::NormalFactory<Real, Dim>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:221:138: error: ‘idx’ is not a constant expression
221 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::NormalFactory<Real, Dim>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:227:138: error: ‘idx’ is not a constant expression
227 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::TextureFactory<Real, Dim>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:257:138: error: ‘idx’ is not a constant expression
257 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::TextureFactory<Real, Dim>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:263:138: error: ‘idx’ is not a constant expression
263 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBColorFactory<Real>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:293:142: error: ‘idx’ is not a constant expression
293 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx%3] ) );
| ^
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBColorFactory<Real>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:299:138: error: ‘idx’ is not a constant expression
299 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBAColorFactory<Real>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:324:142: error: ‘idx’ is not a constant expression
324 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx%3] ) );
| ^
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBAColorFactory<Real>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:330:138: error: ‘idx’ is not a constant expression
330 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
In file included from /usr/include/unistd.h:226,
from /usr/include/x86_64-linux-gnu/bits/sigstksz.h:24,
from /usr/include/signal.h:328,
from ....../poisson-recon/Src/MyMiscellany.h:250,
from ....../poisson-recon/Src/PoissonRecon.cpp:44:
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::PositionFactory<Real, Dim>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:185:138: error: ‘idx’ is not a constant expression
185 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::PositionFactory<Real, Dim>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:191:138: error: ‘idx’ is not a constant expression
191 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::NormalFactory<Real, Dim>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:221:138: error: ‘idx’ is not a constant expression
221 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::NormalFactory<Real, Dim>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:227:138: error: ‘idx’ is not a constant expression
227 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::TextureFactory<Real, Dim>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:257:138: error: ‘idx’ is not a constant expression
257 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::TextureFactory<Real, Dim>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:263:138: error: ‘idx’ is not a constant expression
263 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBColorFactory<Real>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:293:142: error: ‘idx’ is not a constant expression
293 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx%3] ) );
| ^
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBColorFactory<Real>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:299:138: error: ‘idx’ is not a constant expression
299 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBAColorFactory<Real>::plyStaticReadProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:324:142: error: ‘idx’ is not a constant expression
324 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx%3] ) );
| ^
....../poisson-recon/Src/VertexFactory.inl: In member function ‘PlyProperty VertexFactory::RGBAColorFactory<Real>::plyStaticWriteProperty(unsigned int) const’:
....../poisson-recon/Src/VertexFactory.inl:330:138: error: ‘idx’ is not a constant expression
330 | return PlyProperty( _PlyNames[idx] , ToPlyType( _typeOnDisk ) , PLY::Type< Real >() , (int)offsetof( VertexType , coords[idx] ) );
| ^~~ and one additional failiure at file https://github.com/mkazhdan/PoissonRecon/blob/master/Src/PNG.inl , with ERROR: In file included from ....../poisson-recon/Src/PNG.h:34,
from ....../poisson-recon/Src/Image.h:112,
from ....../poisson-recon/Src/PoissonRecon.cpp:50:
....../poisson-recon/Src/PNG.inl: In member function ‘virtual unsigned int PNGWriter::nextRows(const unsigned char*, unsigned int)’:
....../poisson-recon/Src/PNG.inl:148:138: error: invalid use of incomplete type ‘png_struct’ {aka ‘struct png_struct_def’}
148 | for( unsigned int r=0 ; r<rowNum ; r++ ) png_write_row( _png_ptr , (png_bytep)( rows + r * 3 * sizeof( unsigned char ) * _png_ptr->width ) );
| ^~
In file included from ....../poisson-recon/Src/PNG.h:4,
from ....../poisson-recon/Src/Image.h:112,
from ....../poisson-recon/Src/PoissonRecon.cpp:50:
/usr/include/png.h:454:16: note: forward declaration of ‘png_struct’ {aka ‘struct png_struct_def’}
454 | typedef struct png_struct_def png_struct;
| ^~~~~~~~~~~~~~
In file included from ....../poisson-recon/Src/PNG.h:34,
from ....../poisson-recon/Src/Image.h:112,
from ....../poisson-recon/Src/PoissonRecon.cpp:50:
....../poisson-recon/Src/PNG.inl: In member function ‘virtual unsigned int PNGWriter::nextRows(const unsigned char*, unsigned int)’:
....../poisson-recon/Src/PNG.inl:148:138: error: invalid use of incomplete type ‘png_struct’ {aka ‘struct png_struct_def’}
148 | for( unsigned int r=0 ; r<rowNum ; r++ ) png_write_row( _png_ptr , (png_bytep)( rows + r * 3 * sizeof( unsigned char ) * _png_ptr->width ) );
| ^~
In file included from ....../poisson-recon/Src/PNG.h:4,
from ....../poisson-recon/Src/Image.h:112,
from ....../poisson-recon/Src/PoissonRecon.cpp:50:
/usr/include/png.h:454:16: note: forward declaration of ‘png_struct’ {aka ‘struct png_struct_def’}
454 | typedef struct png_struct_def png_struct;
| ^~~~~~~~~~~~~~
^Cmake[2]: *** [CMakeFiles/PoissonReconApp.dir/build.make:79: CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o] Interrupt
make[2]: *** [CMakeFiles/PoissonRecon.dir/build.make:79: CMakeFiles/PoissonRecon.dir/Src/PoissonRecon.cpp.o] Interrupt
make[1]: *** [CMakeFiles/Makefile2:114: CMakeFiles/PoissonReconApp.dir/all] Interrupt
make[1]: *** [CMakeFiles/Makefile2:88: CMakeFiles/PoissonRecon.dir/all] Interrupt
make: *** [Makefile:139: all] Interrupt Can you please help? Thank you ... |
This appears to do with the way in which the offsetof macro is defined. It seems like your compiler's expansion of the macro assumes that it is constant, and hence the error that "coords[idx]" depends on "idx" which is not a compile time constant. You can try defining a macro: |
Hey @jiapei100, what does If you are Ubuntu based, see how |
Hi, I'm using GCC 11.2.0 on Ubuntu 22.04 ... ➜ ~ gcc --version
gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
➜ ~ uname -r
5.15.0-41-generic
➜ ~ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy
➜ ~ And I can tell in file CMakeLists.txt, there is a configuration for this offsetof as:
|
@mkazhdan @dbeef [ 50%] Building CXX object CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o
/usr/bin/clang++ -O3 -DNDEBUG -DRELEASE -Ofast -funroll-loops -ffast-math -Wno-deprecated -Wno-invalid-offsetof -Wno-dangling-else -fPIE -std=c++14 -MD -MT CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o -MF CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o.d -o CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o -c ....../poisson-recon/Src/PoissonRecon.cpp
In file included from ....../poisson-recon/Src/PoissonRecon.cpp:50:
In file included from ....../poisson-recon/Src/Image.h:112:
In file included from ....../poisson-recon/Src/PNG.h:34:
....../poisson-recon/Src/PNG.inl:148:131: error: member access into incomplete type 'png_struct' (aka 'png_struct_def')
for( unsigned int r=0 ; r<rowNum ; r++ ) png_write_row( _png_ptr , (png_bytep)( rows + r * 3 * sizeof( unsigned char ) * _png_ptr->width ) );
^
In file included from ....../poisson-recon/Src/PoissonRecon.cpp:50:
In file included from ....../poisson-recon/Src/Image.h:112:
In file included from ....../poisson-recon/Src/PNG.h:34:
....../poisson-recon/Src/PNG.inl:148:131: error: member access into incomplete type 'png_struct' (aka 'png_struct_def')
for( unsigned int r=0 ; r<rowNum ; r++ ) png_write_row( _png_ptr , (png_bytep)( rows + r * 3 * sizeof( unsigned char ) * _png_ptr->width ) );
^/usr/include/png.h
:454:16: note: forward declaration of 'png_struct_def'
typedef struct png_struct_def png_struct;
^
/usr/include/png.h:454:16: note: forward declaration of 'png_struct_def'
typedef struct png_struct_def png_struct;
^ |
Judging by |
In PNG.inl, can you comment out line 6: "#include <png.h>"? |
Current progress:
➜ build git:(master) ✗ make -j16
/usr/bin/cmake -S....../poisson-recon -B....../poisson-recon/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start ....../poisson-recon/build/CMakeFiles ....../poisson-recon/build//CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '....../poisson-recon/build'
make -f CMakeFiles/PoissonRecon.dir/build.make CMakeFiles/PoissonRecon.dir/depend
make -f CMakeFiles/PoissonReconApp.dir/build.make CMakeFiles/PoissonReconApp.dir/depend
make[2]: Entering directory '....../poisson-recon/build'
cd ....../poisson-recon/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" ....../poisson-recon ....../poisson-recon ....../poisson-recon/build ....../poisson-recon/build ....../poisson-recon/build/CMakeFiles/PoissonRecon.dir/DependInfo.cmake --color=
make[2]: Entering directory '....../poisson-recon/build'
cd ....../poisson-recon/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" ....../poisson-recon ....../poisson-recon ....../poisson-recon/build ....../poisson-recon/build ....../poisson-recon/build/CMakeFiles/PoissonReconApp.dir/DependInfo.cmake --color=
make[2]: Leaving directory '....../poisson-recon/build'
make -f CMakeFiles/PoissonRecon.dir/build.make CMakeFiles/PoissonRecon.dir/build
make[2]: Leaving directory '....../poisson-recon/build'
make -f CMakeFiles/PoissonReconApp.dir/build.make CMakeFiles/PoissonReconApp.dir/build
make[2]: Entering directory '....../poisson-recon/build'
make[2]: Entering directory '....../poisson-recon/build'
[ 25%] Building CXX object CMakeFiles/PoissonRecon.dir/Src/PoissonRecon.cpp.o
/usr/bin/clang++ -DPoissonRecon_EXPORTS -O3 -DNDEBUG -DRELEASE -Ofast -funroll-loops -ffast-math -Wno-deprecated -Wno-invalid-offsetof -Wno-dangling-else -fPIC -std=c++14 -MD -MT CMakeFiles/PoissonRecon.dir/Src/PoissonRecon.cpp.o -MF CMakeFiles/PoissonRecon.dir/Src/PoissonRecon.cpp.o.d -o CMakeFiles/PoissonRecon.dir/Src/PoissonRecon.cpp.o -c ....../poisson-recon/Src/PoissonRecon.cpp
[ 50%] Building CXX object CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o
/usr/bin/clang++ -O3 -DNDEBUG -DRELEASE -Ofast -funroll-loops -ffast-math -Wno-deprecated -Wno-invalid-offsetof -Wno-dangling-else -fPIE -std=c++14 -MD -MT CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o -MF CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o.d -o CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o -c ....../poisson-recon/Src/PoissonRecon.cpp
^Cmake[2]: *** [CMakeFiles/PoissonReconApp.dir/build.make:79: CMakeFiles/PoissonReconApp.dir/Src/PoissonRecon.cpp.o] Interrupt
make[2]: *** [CMakeFiles/PoissonRecon.dir/build.make:79: CMakeFiles/PoissonRecon.dir/Src/PoissonRecon.cpp.o] Interrupt
make[1]: *** [CMakeFiles/Makefile2:88: CMakeFiles/PoissonRecon.dir/all] Interrupt
make[1]: *** [CMakeFiles/Makefile2:114: CMakeFiles/PoissonReconApp.dir/all] Interrupt
make: *** [Makefile:139: all] Interrupt
Or, directly checkout my fork https://github.com/jiapei-nexera/poisson-recon, with trivial modification... I'm now switching back to gcc for another try... |
According to GCC manual of my version 11.2.0 https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc.pdf, I got: So, who has been deliberately make this piece of code nonportable ? or NOT platform-independent??? -Wno-invalid-offsetof (C++ and Objective-C++ only)
Suppress warnings from applying the offsetof macro to a non-POD type.
According to the 2014 ISO C++ standard, applying offsetof to a non-standardlayout type is undefined. In existing C++ implementations, however, offsetof
typically gives meaningful results. This flag is for users who are aware that
they are writing nonportable code and who have deliberately chosen to ignore
the warning about it.
The restrictions on offsetof may be relaxed in a future version of the C++
standard. |
Me. |
Successfully build libPoissonRecom.so out with my_offsetof .Thanks @mkazhdan . However, I noticed that there a bunch of .cpp files containing main() function Src/AdaptiveTreeVisualization.cpp:408:int main( int argc , char* argv[] )
Src/SurfaceTrimmer.cpp:584:int main( int argc , char* argv[] )
Src/ChunkPLY.cpp:546:int main( int argc , char* argv[] )
Src/ImageStitching.cpp:499:int main( int argc , char* argv[] )
Src/EDTInHeat.cpp:573:int main( int argc , char* argv[] )
Src/PoissonRecon.cpp:1064:int main( int argc , char* argv[] )
Src/PointInterpolant.cpp:928:int main( int argc , char* argv[] )
Src/SSDRecon.cpp:900:int main( int argc , char* argv[] ) Would it be a little better to separate them into a couple of folders ? Seems to be doable... Let me try... a kind of deviated, but .... BTW, how to thoroughly solve the problem of offsetof, without using self-defined my_offsetof ??? |
More precisely, the codebase uses the .ply file format to support standard representations of geometry. |
I believe that the problem is that the non-default constructor for PlyFile: What compiler are you using? (I hadn't seen these errors before.) |
In case updating to a more recent version of libpng did require only a few changes when I did try on my fork of the repo gipeto@4878208 . I am consuming v.1.6.37 from conan, but doing the same with a submodule should be easy. |
@mkazhdan Please refer to isl-org/Open3D#5405 |
Confirmed... |
@jiapei100 @dbeef @mkazhdan |
Thanks |
@dbeef Great job! Have you tested the efficiency of the code, I found that it is much slower than the makefile version |
Hi @mkazhdan, we're very interested in using the latest version of this library (16.04) as part of wider CMake projects and see this PR seems to be the most coordinated effort for this but it's quite old and dormant for almost a year. Is there any expectation this would be merged eventually (and would therefore be the best basis to work from) or has it been abandoned, and we'd be just as wise to take a clean look at it with the latest code for our own needs? |
Unfortunately, I am not familiar enough with came to be able to merge and maintain it. So no plans to integrate in the immediate future. |
Would listing CMake as "community supported" be sufficient enough? similar to protobuf. In general, I think people would be fine with sending in the odd PR to fix the CMake build. Don't need to add it to CI or some other gate which would impede your normal development workflow. |
I made a PR with Cmake compatibility 7 years ago. Made some other changes to simply be able to call functions with samples here #35 but I haven't maintained for ages. Seeing this, I think there are still people who would love to have cmake support. It would be great to merge either as long as there is cmake support. I haven't compared but if needed will be able to update the PR too. It's been a while |
What would be involved in doing this (both in terms of setting up initially, and maintaining moving forward) on my end? |
I would just be forward with "CMake is not officially supported, maintenance is delegated to the community". If you do get github issues, I would just cc myself and others who expressed interest in cmake support. Non-entitled people should be fine with "I don't plan on supporting CMake, it's FOSS, if you want it, please help maintain it". |
Please @mkazhdan consider merging this PR. I could't build the master branch of this repo but with this commit on cmake I only needed to add #define NOMINMAX in PoissonRecon.cpp and everything went smooth.(with MSVC at least) |
Once merged, Visual Studio solutions and Makefiles can be removed from repository.
Included build scripts for Windows and Ubuntu.