Home | History | Annotate | Download | only in examples
      1 # Ceres Solver - A fast non-linear least squares minimizer
      2 # Copyright 2012 Google Inc. All rights reserved.
      3 # http://code.google.com/p/ceres-solver/
      4 #
      5 # Redistribution and use in source and binary forms, with or without
      6 # modification, are permitted provided that the following conditions are met:
      7 #
      8 # * Redistributions of source code must retain the above copyright notice,
      9 #   this list of conditions and the following disclaimer.
     10 # * Redistributions in binary form must reproduce the above copyright notice,
     11 #   this list of conditions and the following disclaimer in the documentation
     12 #   and/or other materials provided with the distribution.
     13 # * Neither the name of Google Inc. nor the names of its contributors may be
     14 #   used to endorse or promote products derived from this software without
     15 #   specific prior written permission.
     16 #
     17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     18 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     20 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
     21 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     22 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     23 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     24 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     25 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     26 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     27 # POSSIBILITY OF SUCH DAMAGE.
     28 #
     29 # Author: keir (a] google.com (Keir Mierle)
     30 #
     31 # This is an example Makefile for using Ceres. In practice, the Ceres authors
     32 # suggest using CMake instead, but if Make is needed for some reason, this
     33 # example serves to make it easy to do so.
     34 
     35 # This should point to place where you unpacked or cloned Ceres.
     36 CERES_SRC_DIR := /home/keir/wrk/ceres-extra
     37 
     38 # This should point to the place where you built Ceres. If you got Ceres by
     39 # installing it, then this will likely be /usr/local/lib.
     40 CERES_BIN_DIR := /home/keir/wrk/ceres-extra-bin
     41 
     42 # The place you unpacked or cloned Eigen. If Eigen was installed from packages,
     43 # this will likely be /usr/local/include.
     44 EIGEN_SRC_DIR := /home/keir/src/eigen-3.0.5
     45 
     46 INCLUDES := -I$(CERES_SRC_DIR)/include \
     47             -I$(EIGEN_SRC_DIR)
     48 
     49 CERES_LIBRARY := -lceres
     50 CERES_LIBRARY_PATH := -L$(CERES_BIN_DIR)/lib
     51 CERES_LIBRARY_DEPENDENCIES = -lgflags -lglog
     52 
     53 # If Ceres was built with Suitesparse:
     54 CERES_LIBRARY_DEPENDENCIES += -llapack -lcamd -lamd -lccolamd -lcolamd -lcholmod
     55 
     56 # If Ceres was built with CXSparse:
     57 CERES_LIBRARY_DEPENDENCIES += -lcxsparse
     58 
     59 # If Ceres was built with OpenMP:
     60 CERES_LIBRARY_DEPENDENCIES += -fopenmp -lpthread -lgomp -lm
     61 
     62 # The set of object files for your application.
     63 APPLICATION_OBJS := simple_bundle_adjuster.o
     64 
     65 all: simple_bundle_adjuster
     66 
     67 simple_bundle_adjuster: $(APPLICATION_OBJS)
     68 	g++ \
     69 		$(APPLICATION_OBJS) \
     70 		$(CERES_LIBRARY_PATH) \
     71 		$(CERES_LIBRARY) \
     72 		$(CERES_LIBRARY_DEPENDENCIES) \
     73 		-o simple_bundle_adjuster
     74 
     75 # Disabling debug asserts via -DNDEBUG helps make Eigen faster, at the cost of
     76 # not getting handy assert failures when there are issues in your code.
     77 CFLAGS := -O2 -DNDEBUG
     78 
     79 # If you have files ending in .cpp instead of .cc, fix the next line
     80 # appropriately.
     81 %.o: %.cc $(DEPS)
     82 	g++ -c -o $@ $< $(CFLAGS) $(INCLUDES)
     83