Coder Social home page Coder Social logo

kitware / fletch Goto Github PK

View Code? Open in Web Editor NEW
60.0 14.0 54.0 9.36 MB

Computer Vision Software Development Environment

CMake 14.12% C++ 36.12% C 22.17% Objective-C++ 19.50% Objective-C 0.11% QMake 0.03% Makefile 7.39% Shell 0.01% Batchfile 0.15% Yacc 0.09% Lex 0.05% Perl 0.26%

fletch's Introduction

Fletch

Fletch is component of Kitware's computer vision KWIVER Project. Its purpose is to make it a little easier to use the various open source projects that are KWIVER dependencies. Fletch is a pure CMake project. It does not provide any actual functionality beyond encoding the knowledge of how to obtain, configure, and build a large collection of external projects. Fletch bootstraps a computer vision software development environment by configuring various external projects to all work together nicely. Furthermore it provides this environment in a standard way across platforms: Linux, MacOS, and Windows.

Some of the bigger projects that Fletch builds are

  • OpenCV
  • VXL
  • VTK
  • Qt
  • Ceres Solver
  • Boost
  • Eigen

Additionally, Fletch builds other projects required by the above such as

  • libpng
  • libtiff
  • libjpeg
  • HDF5
  • FFmpeg
  • GLog
  • GFlags
  • SuiteSparse

For a complete and up to date list of packages see CMake/fletch-tarballs.cmake.

Motivation

When building large and complex projects it can be difficult to obtain all the required dependent libraries and get them to build and work together. Many of the projects in the first list above depend on many of the projects in the second list above. If you naively build OpenCV and VXL, for example, each may provide its own copy of libjpeg, libtiff, etc. This is not a problem for the individual projects, but when you try to build a project, like KWIVER, against both of them you end up with conflicts from linking to multiple versions of the same library.

These same problems are addressed by package managers in Linux distributions and projects like MacPorts and Homebrew on MacOS. However, each package manager has its own versions of each of the packages and these are specific to the package manager and to the operating system. If we make KWIVER build against Ubuntu 20.04 packages it might not build against the packaged versions provided by RHEL or even another version of Ubuntu. Furthermore, building on Windows with Visual Studio is a challenge because there is no standard package manager for Windows.

Fletch solves the above problem for KWIVER using CMake. It provides a cross-platform way to get a standardized collection of open source projects working together with the same versions on any OS. Fletch is not quite a cross-platform package manager, but it aims to fill that role for a specific set of C++ and Python packages commonly used in Computer Vision. To do this, the Fletch CMake system makes heavy use of CMake's ExternalProject module.

Overview of Directories

CMake contains the CMake code to obtain and configure the projects
Patches contains the patches to apply to the downloaded source code
Downloads contains downloaded tarballs of Fletch supported projects

Using the Fletch Docker Image

Kitware maintains a Docker image with Fletch prebuilt. The Dockerfile used to build the image can be found here

Pull the image from Dockerhub:

"docker pull kitware/fletch:latest" (master)
               or
"docker pull kitware/fletch:release" (release version)

(https://hub.docker.com/r/kitware/fletch)

or build the Fletch image using the dockerfile:

"docker build -t fletch:tagname ."

Building Fletch

Dependencies

On Linux systems, install the following packages before building Fletch:

# The following example uses the Ubuntu (version 20.04 or newer) apt-get package manager.
# These command may differ depending on your Linux flavor and package manager
sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install libexpat1-dev
sudo apt-get install liblapack-dev
sudo apt-get install python3.8-dev

# If you are using a RHEL-based system, e.g. RedHat, CentOS or Fedora
# and enabling GDAL you might need to install redhat-rpm-config.
{dnf|yum} install redhat-rpm-config

Fletch uses CMake for easy cross-platform compilation. The minimum required version of CMake is 3.15, but newer versions are strongly recommended.

Currently, a compiler with at least C++17 support is expected (e.g. GCC 11). KWIVER requires at least C++17; however, Fletch may compile with older compilers.

CMake Options

Fletch provides CMake options to individually enable each project you build. Some projects will require other projects to be enabled. Unless you are looking for a minimal build, the best way to get started is to set fletch_ENABLE_ALL_PACKAGES to ON and run the CMake configure step to enable all packages. You can then individually turn off packages you don't want by using the CMake GUI with the command ccmake ., described below. It is also useful to enable fletch_BUILD_WITH_PYTHON unless you only want the C++ libraries built.

CMAKE_BUILD_TYPE The compiler mode, usually Debug or Release

fletch_ENABLE_ALL_PACKAGES

Turn all packages on (you can turn some back off later)

fletch_BUILD_WITH_PYTHON Build all the packages with Python support

fletch_BUILD_CXX11

Build using C++11 compiler options. This is required for KWIVER.

fletch_DOWNLOAD_DIR

This is where Fletch will cache downloaded source source code tarballs (default is src/Downloads)

fletch_BUILD_WITH_CUDA Build projects that support it with CUDA
fletch_ENABLE_ package Enables the named package for building

Running CMake

You may run cmake directly from a shell or cmd window. On unix systems, the ccmake tool allows for interactive selection of CMake options. Available for all platforms, the CMake GUI can set the source and build directories, options, "Configure" and "Generate" the build files all with the click of a few button. When running the cmake gui, we also recommend to select the 'Grouped' and 'Advanced' options to better organize the options available.

We recommend building Fletch out of the source directory to prevent mixing source files with compiled products. Create a build directory in parallel with the Fletch source directory for each desired configuration. For example :

\fletch\src

contains the code from the git repository

\fletch\build\rel

contains the built files for the release configuration

\fletch\build\deb

contains the built files for the debug configuration

Note

Windows users, there is a known issue in Qt that will cause a build error if you name a build folder 'release' or 'debug'. Also, when building Qt5 on Windows, if the path to the QT base directory is 63 or more characters, a build error will occur.

Linux users who build FFmpeg and OpenCV together might experience an issue linking to libavcodec. To allow OpenCV to link to FFmpeg, export LD_LIBRARY_PATH to include Fletch's install/lib directory, e.g. export LD_LIBRARY_PATH=/home/user1/fletch/bld/install/lib/:$LD_LIBRARY_PATH

Linux users building QT 5 should also se the LD_LIBRARY_PATH directory this way so that the Qt build tools work properly.

The recommended CMake configuration is to enable all packages and, if desired, python.

If you are using ccmake or the CMake GUI, * Set the source and build locations * Check the option for fletch_ENABLE_ALL_PACKAGES and, if desired, fletch_BUILD_WITH_PYTHON * Disable any packages that are not needed prior to configuring and generating the build files * Configure * Generate the build files

Running from a shell or cmd window:

mkdir fletch
cd fletch

# Pull the source into a sub-folder 'src'
git clone https://github.com/Kitware/fletch.git src

# Create a folder to build in
mkdir build/rel
cd build/rel

# Note you need to provide cmake the source directory at the end (relative or absolute)
# Run CMake (it will use the system default compiler if you don't provide options or use the CMake GUI)
# Also, if using visual studio, you do no need to provide the build type
cmake -DCMAKE_BUILD_TYPE=Release -Dfletch_ENABLE_ALL_PACKAGES=ON -Dfletch_BUILD_WITH_PYTHON=ON ../../src

# Again, python is a very popular option, but it is optional

# If you wish to turn off a package, for example VTK, you would do it this way
cmake -Dfletch_ENABLE_VTK=OFF ../../src

On Linux/OSX/MinGW, execute make

For MSVC users, open the generated fletch.sln and build the project in the configuration associated with the build folder. Even though MSVC supports building multiple configurations, you should only build one configuration per build folder. If you need multiple configurations you should create multiple sub-folders and repeat the above instructions for each configuration. Also If you enable Python, please ensure that python is on your Windows PATH

Getting Help

Fletch is a component of Kitware's collection of open source tools. Please join the fletch-users mailing list to discuss Fletch or to ask for help with using Fletch.

If you experience a build failure, please create an issue on GitHub and include the following information

  1. Your operating system with exact version.
  2. Your compiler's exact version.
  3. The CMake version you are using.
  4. The complete build log, preferably run with a single core after the build has failed.
  5. Details of exactly which CMake options were changed from the default.

Troubleshooting ============

  1. MSVC users may experience build issues with Boost after upgrading their version of Visual Studio. When a Boost build fails, one will find the file Boost.Configure.BCP.Build_out.txt in the build directory. The symptoms of this issue involve output in that file like 'cl' is not recognized as an internal or external command, operable program or batch file. The issue comes from Boost caching its version of b2_msvc_vcvars.cmd. To resolve this issue, you will need to delete those files which are typically located in C:\Users\%USERNAME%\AppData\Local\Temp. Any file named b2_msvc* should be moved out of the way so Boost can generate a new version based on the updated Visual Studio version. Once those files have regenerated and Boost successfully builds, it is safe to delete those files.

fletch's People

Contributors

aaron-bray avatar ankitshah009 avatar aronhelser avatar as6520 avatar billhoffman avatar chetnieter avatar christost avatar collinsr avatar cookt2 avatar daniel-riehm avatar danlipsa avatar dmjoy avatar dstoup avatar erotemic avatar hughed2 avatar johnwparent avatar judajake avatar kfieldho avatar kylefromkitware avatar linus-sherrill avatar mathstuf avatar mattdawkins avatar mleotta avatar mwoehlke-kitware avatar pbeasly avatar purg avatar russelldj avatar sankhesh avatar vovythevov avatar zackgalbreath avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fletch's Issues

Installation Error during make

.anaconda2/lib/libjbig.a(jbig.o)(.text+0x11): unresolvable H�$�H�l$�H��L�d$�H��H�GH��I��H��H�;�PxH�EI�tH��PxH�EH�{I�t$H�$H�lL�d$H�@xh����f�H�$�H�l$�H��L�d$�H��H�GI��H��H���PhI�$H�CH��PhH�$I�DH�lL�d$H��� relocation against symbol `malloc@@GLIBC_2.2.5'
/usr/bin/ld: BFD version 2.20.51.0.2-5.36.el6 20100205 internal error, aborting at reloc.c line 443 in bfd_get_reloc_size

/usr/bin/ld: Please report this bug.

collect2: ld returned 1 exit status
make[5]: *** [libtiff/libtiff.so.5.2.4] Error 1
make[4]: *** [libtiff/CMakeFiles/tiff.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [build/src/libtiff-stamp/libtiff-build] Error 2
make[1]: *** [CMakeFiles/libtiff.dir/all] Error 2
make: *** [all] Error 2

Facing the following installation error during make of fletch repository steps for installation.

Qt build error

Trying to do a release build on Ubuntu 14.04, and I am getting. If I turn off Qt in cmake, everything builds fine.

make[7]: *** [.obj/release-shared/moc_helpviewer.o] Error 1
make[7]: *** Waiting for unfinished jobs....
make[6]: *** [sub-assistant-make_default-ordered] Error 2
make[5]: *** [sub-tools-make_default-ordered] Error 2
make[4]: *** [sub-assistant-make_default-ordered] Error 2
make[3]: *** [sub-tools-make_default-ordered] Error 2
make[2]: *** [build/src/Qt-stamp/Qt-build] Error 2
make[1]: *** [CMakeFiles/Qt.dir/all] Error 2

OpenCV does not use image libraries from Fletch

When building Fletch on Linux with all packages turned on, OpenCV does not use the Fletch builds of libtiff, libjpeg, libpng, and libz if system packages are available. It uses the system packages. The build completes successfully, but building something against Fletch reports errors due to multiple different versions of these libraries.

Create build-error-submission target

Create a build target which will gather the appropriate information needed to diagnose build failures. This target will make it easier on developers who need to investigate issues and also easier on users with less experience with this task.

Caffe needs to be patched for CUDA 9

Similar to OpenCV, we are getting the following error ...

nvcc fatal : Unsupported gpu architecture 'compute_20'

CUDA 9 dropped support for this architecture.

DCMTK VXL Build issue.

Hello,

I am compiling the latest version of Fletch and seeing the below error when trying to compile VXL source. I am on a Ubuntu 16.01 system with libdcmtk-dev installed (selects over the libdcmtk2-dev when using apt-get). Looking at the errors below and the DCMTK site the errors make sense as last 3 items are missing (../ const unsigned long fsize, DcmFileCache *fileCache, Uint32 &fragment)). Is there a different version of the library that I need to install?

I have also tried in the cmake for VXL to compile code with for DCMTK with force flag for vp3. While this option builds follow on processing complains about missing target dcmtk.

/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx: In instantiation of ‘void {anonymous}::convert_src_type(const InT*, DcmPixelData*, unsigned int, Uint16, Uint16, Uint16, Uint16, DiInputPixel*&, vil_pixel_format&) [with InT = short unsigned int; Uint16 = short unsigned int]’:
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:1050:105:   required from here
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:980:18: error: no matching function for call to ‘DiInputPixelTemplate<short unsigned int, unsigned char>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Uint8>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = short unsigned int; T2 = unsigned char]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = short unsigned int; T2 = unsigned char; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note:   candidate expects 9 arguments, 6 provided
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:984:18: error: no matching function for call to ‘DiInputPixelTemplate<short unsigned int, short unsigned int>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Uint16>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = short unsigned int; T2 = short unsigned int]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = short unsigned int; T2 = short unsigned int; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note:   candidate expects 9 arguments, 6 provided
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:988:18: error: no matching function for call to ‘DiInputPixelTemplate<short unsigned int, signed char>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Sint8>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = short unsigned int; T2 = signed char]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = short unsigned int; T2 = signed char; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note:   candidate expects 9 arguments, 6 provided
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:992:18: error: no matching function for call to ‘DiInputPixelTemplate<short unsigned int, short int>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Sint16>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = short unsigned int; T2 = short int]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = short unsigned int; T2 = short int; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note:   candidate expects 9 arguments, 6 provided
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx: In instantiation of ‘void {anonymous}::convert_src_type(const InT*, DcmPixelData*, unsigned int, Uint16, Uint16, Uint16, Uint16, DiInputPixel*&, vil_pixel_format&) [with InT = unsigned char; Uint16 = short unsigned int]’:
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:1053:104:   required from here
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:980:18: error: no matching function for call to ‘DiInputPixelTemplate<unsigned char, unsigned char>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Uint8>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = unsigned char; T2 = unsigned char]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = unsigned char; T2 = unsigned char; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note:   candidate expects 9 arguments, 6 provided
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:984:18: error: no matching function for call to ‘DiInputPixelTemplate<unsigned char, short unsigned int>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Uint16>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = unsigned char; T2 = short unsigned int]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = unsigned char; T2 = short unsigned int; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note:   candidate expects 9 arguments, 6 provided
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:988:18: error: no matching function for call to ‘DiInputPixelTemplate<unsigned char, signed char>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Sint8>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = unsigned char; T2 = signed char]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = unsigned char; T2 = signed char; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note:   candidate expects 9 arguments, 6 provided
/home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:992:18: error: no matching function for call to ‘DiInputPixelTemplate<unsigned char, short int>::DiInputPixelTemplate(DcmPixelData*&, Uint16&, Uint16&, Uint16&, int, unsigned int&)’
       pixel_data = new DiInputPixelTemplate<InT,Sint16>( pixels, alloc, stored, high, 0, num_samples );
                  ^
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiInputPixelTemplate<T1, T2>&) [with T1 = unsigned char; T2 = short int]
     DiInputPixelTemplate(const DiInputPixelTemplate<T1,T2> &);
     ^
/usr/include/dcmtk/dcmimgle/diinpxt.h:668:5: note:   candidate expects 1 argument, 6 provided
In file included from /home/heinerbk/Devel/fletch/release/build/src/VXL/core/vil/file_formats/vil_dicom.cxx:37:0:
/usr/include/dcmtk/dcmimgle/diinpxt.h:131:5: note: candidate: DiInputPixelTemplate<T1, T2>::DiInputPixelTemplate(const DiDocument*, Uint16, Uint16, Uint16, long unsigned int, long unsigned int, long unsigned int, DcmFileCache*, Uint32&) [with T1 = unsigned char; T2 = short int; Uint16 = short unsigned int; Uint32 = unsigned int]
     DiInputPixelTemplate(const DiDocument *document,

libtiff install fails

If fletch_ENABLE_libtiff is turned on, the build fails due to what looks like a misconfigured installation variable:

[...]
[ 98%] Built target tiff-grayscale
[100%] Built target iptcutil
Install the project...
-- Install configuration: "Release"
CMake Error at cmake_install.cmake:39 (file):
  file cannot create directory: /lib/pkgconfig.  Maybe need administrative
  privileges.


make[3]: *** [install] Error 1
make[2]: *** [build/src/libtiff-stamp/libtiff-install] Error 2
make[1]: *** [CMakeFiles/libtiff.dir/all] Error 2
make: *** [all] Error 2

...note the attempt to write to /lib; it looks like some variable is failing to expand. Replicated on mac (Roddy) and Linux (Linus).

Possible Updates in Readme

I recently compiled the Kitware / fletch project and found the following dependency items which may be worth placing in README file.

  1. The version of OpenCV 3.1.0 pulled from the latest fletch repo does not support CUDA 8.0 Toolkit. later versions of OpenCV resolve issue. Looks like CUDA 7.5 does meet needs.

  2. Some of the compile items for python required unicode = ucs4 (Enthought/Canopy issues since it used ucs2)

Failure building libgeotiff

I encountered a build error when building libgeotiff. I'm not sure if I'm missing some dependency, but if I am perhaps fletch could catch this and output a helpful message.

(venv2) joncrall@calculex:~/code/fletch/build-py2$ make
[  2%] Built target PyBind11
[  6%] Built target GFlags
[ 10%] Built target GLog
[ 12%] Built target SuiteSparse
[ 17%] Built target Eigen
[ 21%] Built target Ceres
[ 23%] Built target shapelib
[ 27%] Built target ZLib
[ 29%] Built target PNG
[ 31%] Built target log4cplus
[ 34%] Built target yasm
[ 38%] Built target FFmpeg
[ 40%] Built target libjpeg-turbo
[ 42%] Built target libtiff
[ 44%] Built target OpenCV
[ 46%] Built target TinyXML
[ 48%] Built target Boost
[ 53%] Built target Darknet
[ 55%] Performing build step for 'libgeotiff'
[ 39%] Built target geotiff_library
[ 76%] Built target geotiff_archive
[ 81%] Built target xtiff
[ 83%] Linking C executable makegeo
../lib/libgeotiff.so.2.1.1: undefined reference to `pj_init'
../lib/libgeotiff.so.2.1.1: undefined reference to `pj_fwd'
../lib/libgeotiff.so.2.1.1: undefined reference to `pj_free'
../lib/libgeotiff.so.2.1.1: undefined reference to `pj_inv'
collect2: error: ld returned 1 exit status

CMake Configuration:

AUTO_ENABLE_CAFFE_DEPENDENCY:BOOL=OFF
BUILD_CXSPARSE_ONLY:BOOL=OFF
BUILD_Qt_MINIMAL:BOOL=ON
BUILD_SHARED_LIBS:BOOL=ON
Boost_SELECT_VERSION:STRING=1.55.0
FFmpeg_SELECT_VERSION:STRING=2.6.2
OpenCV_SELECT_VERSION:STRING=3.1.0
PostgreSQL_SELECT_VERSION:STRING=9.5.1
Protobuf_SELECT_VERSION:STRING=2.5.0
VTK_SELECT_VERSION:STRING=6.2
fletch_BUILD_CXX11:BOOL=ON
fletch_BUILD_POSTGRESQL_CONTRIB:BOOL=OFF
fletch_BUILD_WITH_CUDA:BOOL=OFF
fletch_BUILD_WITH_PYTHON:BOOL=ON
fletch_ENABLE_ALL_PACKAGES:BOOL=FALSE
fletch_ENABLE_Boost:BOOL=ON
fletch_ENABLE_Caffe:BOOL=ON
fletch_ENABLE_Caffe_Segnet:BOOL=OFF
fletch_ENABLE_Ceres:BOOL=ON
fletch_ENABLE_Darknet:BOOL=ON
fletch_ENABLE_Darknet_OpenCV:BOOL=ON
fletch_ENABLE_Eigen:BOOL=ON
fletch_ENABLE_FFmpeg:BOOL=ON
fletch_ENABLE_GDAL:BOOL=OFF
fletch_ENABLE_GEOS:BOOL=OFF
fletch_ENABLE_GFlags:BOOL=ON
fletch_ENABLE_GLog:BOOL=ON
fletch_ENABLE_GTest:BOOL=ON
fletch_ENABLE_GeographicLib:BOOL=ON
fletch_ENABLE_HDF5:BOOL=ON
fletch_ENABLE_ITK:BOOL=OFF
fletch_ENABLE_LMDB:BOOL=ON
fletch_ENABLE_LevelDB:BOOL=ON
fletch_ENABLE_OpenBLAS:BOOL=ON
fletch_ENABLE_OpenCV:BOOL=ON
fletch_ENABLE_OpenCV_FFmpeg:BOOL=ON
fletch_ENABLE_OpenCV_contrib:BOOL=OFF
fletch_ENABLE_OpenCV_highgui:BOOL=ON
fletch_ENABLE_PNG:BOOL=ON
fletch_ENABLE_PROJ4:BOOL=OFF
fletch_ENABLE_PostgreSQL:BOOL=ON
fletch_ENABLE_Protobuf:BOOL=ON
fletch_ENABLE_PyBind11:BOOL=ON
fletch_ENABLE_Qt:BOOL=ON
fletch_ENABLE_Snappy:BOOL=ON
fletch_ENABLE_SuiteSparse:BOOL=ON
fletch_ENABLE_TinyXML:BOOL=ON
fletch_ENABLE_VTK:BOOL=ON
fletch_ENABLE_VXL:BOOL=ON
fletch_ENABLE_ZLib:BOOL=ON
fletch_ENABLE_libgeotiff:BOOL=ON
fletch_ENABLE_libjpeg-turbo:BOOL=ON
fletch_ENABLE_libjson:BOOL=ON
fletch_ENABLE_libkml:BOOL=ON
fletch_ENABLE_libtiff:BOOL=ON
fletch_ENABLE_libxml2:BOOL=ON
fletch_ENABLE_log4cplus:BOOL=ON
fletch_ENABLE_shapelib:BOOL=ON
fletch_PYTHON_MAJOR_VERSION:STRING=2

Compile Error (opencv)

I got the following error during fletch compile (cmake configured by fletch-precache.cmake file in kwiver/source/examples/call_SMQTK_pipeline directory of kwiver repository in dev/SMQTK-descriptor-pipeline branch). How can I solve this?

-- CUDA detected: 7.0
-- CUDA NVCC target flags: -gencode;arch=compute_11,code=sm_11;-gencode;arch=compute_12,code=sm_12;-gencode;arch=compute_13,code=sm_13;-gencode;arch=compute_20,code=sm_20;-gencode;arch=compute_20,code=sm_21;-gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_30,code=compute_30
-- Found PythonInterp: /home/user01/miniconda/envs/smqtk/bin/python (found suitable version "2.7.10", minimum required is "2.0") 
-- Could NOT find PythonLibs (missing:  PYTHON_INCLUDE_DIRS) (found suitable exact version "2.7.10")
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 189, in <module>
    from . import random
  File "/usr/local/lib/python2.7/dist-packages/numpy/random/__init__.py", line 99, in <module>
    from .mtrand import *
ImportError: /usr/local/lib/python2.7/dist-packages/numpy/random/mtrand.so: undefined symbol: PyFPE_jbuf
-- Could NOT find JNI (missing:  JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) 
-- Performing Test HAVE_CXX_WNO_UNDEF
-- Performing Test HAVE_CXX_WNO_UNDEF - Success
-- Performing Test HAVE_CXX_WNO_SHADOW
-- Performing Test HAVE_CXX_WNO_SHADOW - Success
-- Assume that non-module dependency is available: cudart (for module opencv_core)
-- Assume that non-module dependency is available: nppc (for module opencv_core)
-- Assume that non-module dependency is available: nppi (for module opencv_core)
-- Assume that non-module dependency is available: npps (for module opencv_core)
-- Performing Test HAVE_CXX_WNO_UNUSED_BUT_SET_VARIABLE
-- Performing Test HAVE_CXX_WNO_UNUSED_BUT_SET_VARIABLE - Success
-- Performing Test HAVE_CXX_WNO_DEPRECATED_DECLARATIONS
-- Performing Test HAVE_CXX_WNO_DEPRECATED_DECLARATIONS - Success
-- Performing Test HAVE_CXX_WNO_MISSING_DECLARATIONS
-- Performing Test HAVE_CXX_WNO_MISSING_DECLARATIONS - Success
-- Performing Test HAVE_CXX_WNO_UNUSED_PARAMETER
-- Performing Test HAVE_CXX_WNO_UNUSED_PARAMETER - Success
-- 
-- General configuration for OpenCV 2.4.11 =====================================
--   Version control:               unknown
-- 
--   Platform:
--     Host:                        Linux 3.16.0-51-generic x86_64
--     CMake:                       2.8.12.2
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               Release
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                /usr/bin/c++  (ver 4.8.4)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      
--     Linker flags (Debug):        
--     Precompiled headers:         YES
-- 
--   OpenCV modules:
--     To be built:                 core flann imgproc highgui features2d calib3d ml video legacy objdetect photo gpu ocl nonfree contrib stitching superres ts videostab
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 androidcamera dynamicuda java python viz
-- 
--   GUI: 
--     QT:                          NO
--     GTK+ 2.x:                    YES (ver 2.24.23)
--     GThread :                    YES (ver 2.40.2)
--     GtkGlExt:                    NO
--     OpenGL support:              NO
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.8)
--     JPEG:                        /usr/lib/x86_64-linux-gnu/libjpeg.so (ver )
--     PNG:                         /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.2.50)
--     TIFF:                        /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 - 4.0.3)
--     JPEG 2000:                   /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1)
--     OpenEXR:                     /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so (ver 1.6.1)
-- 
--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  YES (ver 2.2.1)
--     FFMPEG:                      YES
--       codec:                     YES (ver 54.35.0)
--       format:                    YES (ver 54.20.4)
--       util:                      YES (ver 52.3.0)
--       swscale:                   YES (ver 2.1.1)
--       gentoo-style:              YES
--     GStreamer:                   NO
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    NO/YES
--     XIMEA:                       NO
--     Xine:                        NO
-- 
--   Other third-party libraries:
--     Use IPP:                     NO
--     Use Eigen:                   NO
--     Use TBB:                     NO
--     Use OpenMP:                  NO
--     Use GCD                      NO
--     Use Concurrency              NO
--     Use C=:                      NO
--     Use Cuda:                    YES (ver 7.0)
--     Use OpenCL:                  YES
-- 
--   NVIDIA CUDA
--     Use CUFFT:                   YES
--     Use CUBLAS:                  NO
--     USE NVCUVID:                 NO
--     NVIDIA GPU arch:             11 12 13 20 21 30 35
--     NVIDIA PTX archs:            30
--     Use fast math:               NO
-- 
--   OpenCL:
--     Version:                     dynamic
--     Include path:                /home/user01/kitware/fletch/build/build/src/OpenCV/3rdparty/include/opencl/1.2
--     Use AMD FFT:                 NO
--     Use AMD BLAS:                NO
-- 
--   Python:
--     Interpreter:                 /home/user01/miniconda/envs/smqtk/bin/python (ver 2.7.10)
-- 
--   Java:
--     ant:                         NO
--     JNI:                         NO
--     Java tests:                  NO
-- 
--   Documentation:
--     Build Documentation:         NO
--     Sphinx:                      NO
--     PdfLaTeX compiler:           NO
--     Doxygen:                     NO
-- 
--   Tests and samples:
--     Tests:                       YES
--     Performance tests:           NO
--     C/C++ Examples:              NO
-- 
--   Install path:                  /home/user01/kitware/fletch/build/install
-- 
--   cvconfig.h is in:              /home/user01/kitware/fletch/build/build/src/OpenCV-build
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user01/kitware/fletch/build/build/src/OpenCV-build
[ 47%] Performing build step for 'OpenCV'
[  0%] Generating opencv_core_pch_dephelp.cxx
Scanning dependencies of target opencv_core_pch_dephelp
[  0%] Building CXX object modules/core/CMakeFiles/opencv_core_pch_dephelp.dir/opencv_core_pch_dephelp.cxx.o
Linking CXX static library ../../lib/libopencv_core_pch_dephelp.a
[  0%] Built target opencv_core_pch_dephelp
Scanning dependencies of target pch_Generate_opencv_core
[  0%] Generating precomp.hpp
[  0%] Generating precomp.hpp.gch/opencv_core_Release.gch
[  0%] Built target pch_Generate_opencv_core
[  0%] Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o
nvcc fatal   : Unsupported gpu architecture 'compute_11'
CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):
  Error generating
  /home/user01/kitware/fletch/build/build/src/OpenCV-build/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o


make[5]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o] Error 1
make[4]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [build/src/OpenCV-stamp/OpenCV-build] Error 2
make[1]: *** [CMakeFiles/OpenCV.dir/all] Error 2
make: *** [all] Error 2

OpenCV Needs to be patched to support CUDA 9

OpenCV 3.1 does not build against CUDA 9. This doesn't appear to be resolved in OpenCV 3.3 yet either, but I haven't tested it. The error message is as follows:

CUSTOMBUILD : CMake error : The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)

I observed this on Windows 10, but this stackoverflow post indicates the same problem occurs with Ubuntu and with OpenCV 3.3. It also offers a recommendation on how to patch it.

multiple build failures related to fletch locally built packages (-rpath) placed in install/lib

(CentOS 6.5 x86_64 devtoolset-4)

started from clone with last fletch commit d193f2b

working from the README.rst, cmake command
cmake -DCMAKE_BUILD_TYPE=Release -Dfletch_ENABLE_ALL_PACKAGES=ON -Dfletch_ENABLE_PYTHON=ON ../../git.fletch/fletch
(I placed clone in a 'fletch' rather than a 'src' directory.)

Encounter link/ld errors like and similar to:
/opt/rh/devtoolset-4/root/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/ld: warning: libswresample.so.1, needed by //home/user1/kitwarework/bldfletch/Drel-devtoolset-4/install/lib/libavcodec.so.56, not found (try using -rpath or -rpath-link)

Both items existed in the builddir/install/lib.

The one shown is encountered similarly for multiple items under OpenCV, and something similar in a couple of other places as well. Modifying the 'link.txt' files in the failing projects and adding the path to builddir/install/lib to the -Wl,-rpath,<> string allows the projects to link successfully (at least those I tried, I eventually gave up.)

There is patch code in a file fletch/Patches/OpenCVConfig.cmake.in that looks like it might possibly be used to address this, but (A)it doesn't seem to get applied, at least for opencv-3.1, and (B)it seems restricted to cross-compiling only, while I was, AFAIK, doing a build targeting the local host.

(I'll also note here, that CMAKE_SYSTEM_NAME which that -rpath related patch code references, is apparently not defined in scripts executed via -P, and there is at least some patch code for fletch...OpenCV that appears to be executed via the -P mechanism. see https://gitlab.kitware.com/cmake/cmake/issues/17109.)

Darknet needs to be patched for CUDA 9

Similar to OpenCV, we are getting the following error ...

nvcc fatal : Unsupported gpu architecture 'compute_20'

CUDA 9 dropped support for this architecture.

Error compiling Ceres

On Ubuntu 15.10, with libsuitesparse-dev 4.2.1-2ubuntu3-1 installed.
I get the following error while trying to compile Fletch with Ceres.

[  0%] Building CXX object internal/ceres/CMakeFiles/ceres.dir/linear_solver.cc.o
In file included from /usr/include/cholmod.h:86:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/suitesparse.h:47,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:46,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/usr/include/SuiteSparse_config.h:85:16: error: redefinition of ‘struct SuiteSparse_config_struct’
 typedef struct SuiteSparse_config_struct
                ^
In file included from /home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/cs.h:32:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/cxsparse.h:40,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:43,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/SuiteSparse_config.h:85:8: error: previous definition of ‘struct SuiteSparse_config_struct’
 struct SuiteSparse_config_struct
        ^
In file included from /usr/include/cholmod.h:86:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/suitesparse.h:47,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:46,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/usr/include/SuiteSparse_config.h:92:22: error: invalid type in declaration before ‘;’ token
 } SuiteSparse_config ;
                      ^
/usr/include/SuiteSparse_config.h:92:22: error: ‘typedef int SuiteSparse_config’ redeclared as different kind of symbol
In file included from /home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/cs.h:32:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/cxsparse.h:40,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:43,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/SuiteSparse_config.h:96:41: error: previous declaration of ‘SuiteSparse_config_struct SuiteSparse_config’
 extern struct SuiteSparse_config_struct SuiteSparse_config ;
                                         ^
In file included from /usr/include/cholmod.h:86:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/suitesparse.h:47,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:46,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/usr/include/SuiteSparse_config.h:99:5: error: ‘SuiteSparse_config’ is not a type
     SuiteSparse_config *config        /* SuiteSparse-wide configuration */
     ^
/usr/include/SuiteSparse_config.h:100:1: error: declaration of C function ‘void* SuiteSparse_malloc(std::size_t, std::size_t, int*, int*)’ conflicts with
 ) ;
 ^
In file included from /home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/cs.h:32:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/cxsparse.h:40,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:43,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/SuiteSparse_config.h:102:7: error: previous declaration ‘void* SuiteSparse_malloc(std::size_t, std::size_t)’ here
 void *SuiteSparse_malloc    /* pointer to allocated block of memory */
       ^
In file included from /usr/include/cholmod.h:86:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/suitesparse.h:47,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:46,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/usr/include/SuiteSparse_config.h:105:5: error: ‘SuiteSparse_config’ is not a type
     SuiteSparse_config *config        /* SuiteSparse-wide configuration */
     ^
/usr/include/SuiteSparse_config.h:106:1: error: declaration of C function ‘void* SuiteSparse_free(void*, int*)’ conflicts with
 ) ;
 ^
In file included from /home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/cs.h:32:0,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/cxsparse.h:40,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/schur_complement_solver.h:43,
                 from /home/bjacquet/Dev/MAP-Tk/Fletch/build/build/src/Ceres/internal/ceres/linear_solver.cc:37:
/home/bjacquet/Dev/MAP-Tk/Fletch/build/install/include/SuiteSparse_config.h:124:7: error: previous declaration ‘void* SuiteSparse_free(void*)’ here
 void *SuiteSparse_free      /* always returns NULL */
       ^
internal/ceres/CMakeFiles/ceres.dir/build.make:1158: recipe for target 'internal/ceres/CMakeFiles/ceres.dir/linear_solver.cc.o' failed
make[5]: *** [internal/ceres/CMakeFiles/ceres.dir/linear_solver.cc.o] Error 1
CMakeFiles/Makefile2:106: recipe for target 'internal/ceres/CMakeFiles/ceres.dir/all' failed
make[4]: *** [internal/ceres/CMakeFiles/ceres.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
make[3]: *** [all] Error 2
CMakeFiles/Ceres.dir/build.make:113: recipe for target 'build/src/Ceres-stamp/Ceres-build' failed
make[2]: *** [build/src/Ceres-stamp/Ceres-build] Error 2
CMakeFiles/Makefile2:127: recipe for target 'CMakeFiles/Ceres.dir/all' failed
make[1]: *** [CMakeFiles/Ceres.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2

Fletch Packages Found by External Projects --- Unintended Interactions with The CMake Package Registry?

So, I've just spent a better part of an evening trying to figure out why a external build of caffe2 keeps finding packages in one of my random fletch build directories. This particular fletch build was not in my CMAKE_PREFIX_PATH, PATH, CPATH, or any other environment variable I checked. However, whenever I configured caffe2 it kept returning directories within this specific fletch build when they called find_packages on eigen3, gflags, and glog.

After a lot of debugging I finally figured out it was due to a feature of CMake called the CMake Package Registry (which was new to me). Apparently the Caffe Caffe_Segnet gflags glog and yaml-cpp packages are writing information there. (On Linux the registry is implemented as files in the ~/.cmake/packages directory, so deleting that directory solves the problem temporarily).

For someone like myself who has a good deal of CMake experience, but was not awar e of this quirk, this behavior is highly non-intuitive.

Is it something within Fletch or these packages that is causing this package registry to be written? Should we turn it off? If so would it be as simple as setting CMAKE_EXPORT_NO_PACKAGE_REGISTRY=True in the fletch CMakeLists.txt?

Qt compile error

On Debian 8.4.0 following error occures:

[ 6%] Performing configure step for 'Qt'

This is the Qt for Linux/X11 Open Source Edition.

You are licensed to use this software under the terms of
the Lesser GNU General Public License (LGPL) versions 2.1.
You are also licensed to use this software under the terms of
the GNU General Public License (GPL) versions 3.

You have already accepted the terms of the license.

Creating qmake. Please wait...
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/tpinkowski/fletch/build/src/Qt/mkspecs/linux-g++-64.
CMakeFiles/Qt.dir/build.make:107: recipe for target 'build/src/Qt-stamp/Qt-configure' failed

Python Option is Hidden

The option to enable Python in Fletch is hidden as an advanced option. It does not turn on when enabling all packages. KWIVER has a top-level CMake option to enable Python and Python is required to build Sprokit in KWIVER. Both of these options in KWIVER will fail when built against a Fletch that does not have Python enabled. It seems we should also promote Python to a top-level (non-hidden) option in Fletch, and possible even turn it on when selecting "build all packages".

Qt build error on MacOS/clang

I get the following build error when building Qt via fletch on my Mac.

messagemodel.cpp:186:61: error: ordered comparison between pointer and zero ('MessageItem *' and 'int')
if (c->findMessage(m->text(), m->comment()) >= 0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~

Ninja build with everything turned on fails

[1/76] Removing build stamp file for build update (forcebuild).
[2/76] Performing build step for 'fletch'
FAILED: build/src/fletch-stamp/fletch-build
cd /home/matt/Dev/viame/ninja-test/build/src/fletch-build && /usr/local/bin/cmake --build . && /usr/local/bin/cmake -E touch /home/matt/Dev/viame/ninja-test/build/src/fletch-stamp/fletch-build
[1/82] Performing build step for 'PNG'
FAILED: build/src/PNG-stamp/PNG-build
cd /home/matt/Dev/viame/ninja-test/build/src/fletch-build/build/src/PNG-build && /usr/local/bin/cmake --build . && /usr/local/bin/cmake -E touch /home/matt/Dev/viame/ninja-test/build/src/fletch-build/build/src/PNG-stamp/PNG-build
ninja: error: stat(libpng.so): Too many levels of symbolic links
[2/82] Completed 'libxml2'
[3/82] Completed 'Boost'
[4/82] Completed 'GLog'
[5/82] Completed 'Protobuf'
[6/82] Completed 'TinyXML'

Not able to build libkml

I have encounter below error while building libkml.
Dependecy is install at:
ls /lib/x86_64-linux-gnu/expat
/lib/x86_64-linux-gnu/libexpat.so.1 /lib/x86_64-linux-gnu/libexpat.so.1.6.0
echo $LD_LIBRARY_PATH
/lib/x86_64-linux-gnu

Scanning dependencies of target libkml
[ 42%] Creating directories for 'libkml'
[ 44%] Performing download step (download, verify and extract) for 'libkml'
-- downloading...
src='https://github.com/kitware/libkml/archive/79b3eb066eacd8fb117b10dc990b53b4cd11f33d.zip'
dst='??/??/??/??/??/fletch/src/Downloads/79b3eb066eacd8fb117b10dc990b53b4cd11f33d.zip'
timeout='none'
-- downloading... done
-- verifying file...
file='??/??/??/??/??/fletch/src/Downloads/79b3eb066eacd8fb117b10dc990b53b4cd11f33d.zip'
-- verifying file... done
-- extracting...
src='??/??/??/??/??/fletch/src/Downloads/79b3eb066eacd8fb117b10dc990b53b4cd11f33d.zip'
dst='??/??/??/??/??/fletch/build/src/libkml'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[ 44%] Performing patch step for 'libkml'
Patching libkml in ??/??/??/??/??/fletch/build/src/libkml
[ 44%] No update step for 'libkml'
[ 44%] Performing configure step for 'libkml'
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Boost version: 1.55.0
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.55.0
-- Could NOT find EXPAT (missing: EXPAT_LIBRARY EXPAT_INCLUDE_DIR)
CMake Warning (dev) at CMakeLists.txt:389 (INSTALL):
Policy CMP0062 is not set: Disallow install() of export() result. Run
"cmake --help-policy CMP0062" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.

The file

??/??/??/??/??/fletch/build/src/libkml-build/KMLTargets.cmake

was generated by the export() command. It should not be installed with the
install() command. Use the install(EXPORT) mechanism instead. See the
cmake-packages(7) manual for more.

This warning is for project developers. Use -Wno-dev to suppress it.

-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:

CMAKE_CONFIGURATION_TYPES
CMAKE_INSTALL_LIBDIR

-- Build files have been written to: ??/??/??/??/??/fletch/build/src/libkml-build
[ 44%] Performing build step for 'libkml'
Scanning dependencies of target kml
[ 0%] Building CXX object CMakeFiles/kml.dir/src/kml/base/attributes.cc.o
[ 1%] Building CXX object CMakeFiles/kml.dir/src/kml/base/csv_splitter.cc.o
[ 2%] Building CXX object CMakeFiles/kml.dir/src/kml/base/date_time.cc.o
[ 3%] Building CXX object CMakeFiles/kml.dir/src/kml/base/expat_parser.cc.o
In file included from ??/??/??/??/??/fletch/build/src/libkml/src/kml/base/expat_parser.cc:28:0:
??/??/??/??/??/fletch/build/src/libkml/src/kml/base/expat_parser.h:37:19: fatal error: expat.h: No such file or directory
compilation terminated.
CMakeFiles/kml.dir/build.make:134: recipe for target 'CMakeFiles/kml.dir/src/kml/base/expat_parser.cc.o' failed
make[5]: *** [CMakeFiles/kml.dir/src/kml/base/expat_parser.cc.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/kml.dir/all' failed
make[4]: *** [CMakeFiles/kml.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make[3]: *** [all] Error 2
CMakeFiles/libkml.dir/build.make:114: recipe for target 'build/src/libkml-stamp/libkml-build' failed
make[2]: *** [build/src/libkml-stamp/libkml-build] Error 2
CMakeFiles/Makefile2:987: recipe for target 'CMakeFiles/libkml.dir/all' failed
make[1]: *** [CMakeFiles/libkml.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

expact.h locations:
.??/??/??/??/??/fletch/build/src/libkml/third_party/expat.src/lib/expat.h
.??/??/??/??/??/fletch/build/src/libkml/third_party/expat.src/amiga/include/proto/expat.h
.??/??/??/??/??/fletch/build/src/libkml/third_party/expat.src/amiga/include/interfaces/expat.h
.??/??/??/??/??/fletch/build/src/libkml/third_party/expat.src/amiga/include/inline4/expat.h
.??/??/??/??/??/fletch/build/src/libkml/third_party/expat.src/amiga/include/libraries/expat.h
.??/??/??/??/??/fletch/build/src/libkml/third_party/expat.win32/expat.h

VXL does not use image libraries from Fletch

When building VXL, it is not configured to build against the image libraries provided by Fletch (e.g. libtiff, libjpeg, libpng, libz). If the image libraries are provided by Fletch and also by system packages, VXL will prefer the system packages. This can cause problems with 3rd party projects built against fletch, since they will depend on multiple versions of these image libraries.

Darknet build errors on MacOS/clang

I get the following errors when building Darknet via fletch on my Mac. A little googling seems to imply that the 'clock_gettime' method used to be missing on MacOS but apparently it has recently been added. I am running Sierra 10.12.6 with Apple LLVM version 9.0.0 (clang-900.0.38).

[ 1%] Building C object src/CMakeFiles/darknet_lib.dir/utils.c.o
/Users/chet.nieter/projects/ComputerVision/fletch/build/rel/build/src/Darknet/src/utils.c:89:9: warning: 'CLOCK_REALTIME' macro
redefined [-Wmacro-redefined]
#define CLOCK_REALTIME 0
^
/usr/include/time.h:154:9: note: previous definition is here
#define CLOCK_REALTIME _CLOCK_REALTIME
^
/Users/chet.nieter/projects/ComputerVision/fletch/build/rel/build/src/Darknet/src/utils.c:91:5: fatal error: conflicting types for
'clock_gettime'
int clock_gettime(int X, struct timespec *tv)
^
/usr/include/time.h:177:5: note: previous declaration is here
int clock_gettime(clockid_t __clock_id, struct timespec *__tp);
^
1 warning and 1 error generated.

Caffe not building on windows with CUDA enabled

1>CUSTOMBUILD : CMake error : Parse error in cache file D:/Dev/viame/build-vs15/build/src/fletch-build/build/src/Caffe-build/CMakeCache.txt on line 890. Offending entry: detect_cuda_archs.cu [D:\Dev\viame\build-vs15\build\src\fletch-build\Caffe.vcxproj]
1>CUSTOMBUILD : CMake error : Parse error in cache file D:/Dev/viame/build-vs15/build/src/fletch-build/build/src/Caffe-build/CMakeCache.txt on line 891. Offending entry: Creating library a.lib and object a.exp [D:\Dev\viame\build-vs15\build\src\fletch-build\Caffe.vcxproj]
1>CUSTOMBUILD : CMake error : Parse error in cache file D:/Dev/viame/build-vs15/build/src/fletch-build/build/src/Caffe-build/CMakeCache.txt on line 892. Offending entry: 3.0 [D:\Dev\viame\build-vs15\build\src\fletch-build\Caffe.vcxproj]
1>

CMakeCache contents:

line 886 //ADVANCED property for variable: CUDA_cusparse_LIBRARY
CUDA_cusparse_LIBRARY-ADVANCED:INTERNAL=1
//Returned GPU architetures from caffe_detect_gpus tool
CUDA_gpu_detect_output:INTERNAL=nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
//Location of make2cmake.cmake
CUDA_make2cmake:INTERNAL=C:/Program Files/CMake/share/cmake-3.8/Modules/FindCUDA/make2cmake.cmake
//ADVANCED property for variable: CUDA_nppc_LIBRARY
CUDA_nppc_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_nppi_LIBRARY
CUDA_nppi_LIBRARY-ADVANCED:INTERNAL=1

Create make-swap target

Create a build target to generate the list of enabled packages, their version number and license. This target will be very useful for submitting SWAP information to customers and during proposal writing.

CMAKE_CXX_STANDARD not supported by cmake_minimum_required

CMAKE_CXX_STANDARD was added to CMake in version 3.3.0 but is used in fletch to control CXX_11 support for all packages. Currently we have 2 choices:

  1. Update the cmake_minimum_required to a version which supports this flag, or
  2. Change the approach we use to enable cxx_11

I personally favor option 1 since keep up with modern CMake allows us to write cleaner code. Plus, several fletch packages already require CMake versions greater than our minimum.

libtiff fails to build when opengl/glut are found

Seems related to these errors:

  1. https://bugs.orfeo-toolbox.org/view.php?id=1306
  2. https://ubuntuforums.org/showthread.php?t=1703770

When OPENGL_GLU_FOUND OPENGL_GLU_FOUND and GLUT_FOUND libtiff forces HAVE_OPENGL to be true. This caused me to encounter the error: GLUT_Xmu_LIBRARY NOTFOUND

Ideally, there would be an option to turn opengl off in libtiff itself.

Following the directions in the second link, I was able to continue by installing the packages

sudo apt-get install libxmu-dev libxi-dev

but obviously forcing the user to install packages isn't an ideal fix for a superbuild, so it might be a good idea to incorporate the lines from the first lines that set an initial cache with opengl forced off, set(WITH_OPENGL "FALSE" CACHE BOOL "Initial cache" FORCE) or we can make a patch for libtiff that fixes the issue and might eventually be pushed to the parent repo.

Tinyxml using tinystr even though TIXML_USE_STL is set in the patch

Hello,

I am trying to use tinyxml complied in fletch for an external project but am getting the following error

/home/local/KHQ/ameya.shringi/fletch/build/install/include/tinyxml.h:52:22: fatal error: tinystr.h: No such file or directory

I have checked the tinyxml documentation and using TIXML_USE_STL should remove tinystr.h dependency, it is present in the patch but tinyxml still uses tinystr.h.

Fletch does NOT support FMPEG 32 bit

Hi!

I am new to all of this, but is there anyone who is willing to help me with the following error?

CMake Error at CMake/fletch-tarballs.cmake:115 (message):
Fletch does NOT support FMPEG 32 bit. Please use 64bit.

I am trying to figure out how to solve this error, but it's taking me quite some time. I am hoping I am just not experienced enough and that is actually easy to solve.

Thank you in advance!

Duplicate python flags

Currently there are two flags which claim to enable/disable python, FLETCH_BUILD_WITH_PYTHON and fletch_BUILD_WITH_PYTHON). The new norm is fletch_BUILD_WITH_PYTHON. Remove the other.

Missing header in Boost Python install

When building Boost with Python enabled, the following file is found in the source tree but not installed:

boost/python/raw_function.hpp

This becomes a problem when also building Caffe, which uses this file. The resulting error is

/home/vagrant/Software/fletch/build/build/src/Caffe/python/caffe/_caffe.cpp:8:41: fatal error: boost/python/raw_function.hpp: No such file or directory
#include <boost/python/raw_function.hpp>

I have encountered this error on Centos 7. This issue was also listed as a known issue for VIAME: https://github.com/Kitware/VIAME/blob/master/doc/install_guide.rst#id10

fletch build failure, (OpenCV patch) OpenCV/FFmpeg/libbz2 management not correct

This fletch OpenCV3 patch (1a97ac3) with its if() section containing "FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)" apparently presumes that FFmpeg will have been built incorporating bz2 support, when that support is only conditionally compiled (subject to CONFIG_BZLIB in matroskadec.c), and FFmpeg may configure/build without a requirement of bz2 support.

On systems that may have only versioned instances of the bz2 shared library locatable (no locatable unversioned library or unversioned symlink present), a build failure may occur with cmake not finding the correct bz2 library via FIND_LIBRARY() and thus executing the FIND_FILE() which, in my 64bit targeted build, finds and refs the 32bit version of the library (curiously, twice, in the opencv_videoio link.txt). The OpenCV ld therefore fails, finding the (actually unnecessary) 32bit library to be in the wrong format (for the 64bit targeted build) and failing to complete.

Either of, A) removing the incorrect 32bit ref's from the link.txt, or, B) changing them to reference the correct available 64bit versioned instances of the library, allows the link to complete successfully.

See https://gitlab.kitware.com/cmake/cmake/issues/17131 for a bit more information on the circumstances leading to the failure and this discovery.

OpenCV not configuring on latest master on windows

With OpenCV 2.*:

1>CUSTOMBUILD : CMake error : No cmake script provided. [D:\Dev\viame\build-vs15\build\src\fletch-build\OpenCV.vcxproj]
1>CUSTOMBUILD : CMake error : Problem processing arguments. Aborting. [D:\Dev\viame\build-vs15\build\src\fletch-build\OpenCV.vcxproj]

allow turning VTK_DEBUG_LEAKS off for release builds

currently VTK_DEBUG_LEAKS in VTK is set on by default. This is useful for debug builds, but can be annoying when trying to make release binaries (especially on Windows). If not all leaks have been addressed it will pop up a bunch of error dialogs when closing an application. Is there a way we can make this OFF by default for Release builds of VTK and ON for Debug builds? Or maybe just propagate this option up to the Fletch CMake options?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.