Problems building on macOS for iOS

194 views
Skip to first unread message

Rick M

unread,
Mar 21, 2018, 5:47:25 PM3/21/18
to Ceres Solver
I'm running into issues building Ceres 1.13.0 with Xcode 9.2 (we've built older versions of Ceres in the past). I'm not sure if it's CMake or something else, because it seems CMake itself doesn't recognize Xcode (AppleClang) properly. But I find this hard to believe, since we build other things with CMake successfully, and it is the de facto clang compiler for macOS. Here's the example:

$ cmake $CERES_DIR -DCMAKE_TOOLCHAIN_FILE=$CERES_DIR/cmake/iOS.cmake -DCXX11=ON -DLAPACK=OFF -DEIGEN_INCLUDE_DIR=$EIGEN_INCLUDE_DIR -DIOS_PLATFORM=OS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../
-- Building with Xcode version: 9.2
-- Configuring iOS build for platform: OS, architecture(s): arm64
-- Using C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- Using CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-- Using libtool: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
-- Building for minimum iOS version: 11.2 (SDK version: 11.2)
-- Detected Ceres version: 1.13.0 from /Users/me/Projects/Clients/MyCompany/repo/thirdparty/ceres-solver-1.13.0/include/ceres/version.h
-- Building Ceres for iOS platform: OS
-- Building for iOS: Forcing use of miniglog instead of glog.
-- Building for iOS: SuiteSparse, CXSparse, LAPACK, gflags, and OpenMP are not available.
-- Building for iOS: Will not build examples.
-- No preference for use of exported Eigen CMake configuration set, and no hints for include directory provided. Defaulting to preferring an installed/exported Eigen CMake configuration if available.
-- Found installed version of Eigen: /usr/local/share/eigen3/cmake
-- Found Eigen version 3.3.4: /usr/local/include/eigen3

   
===============================================================
   
Disabling the use of Eigen as a sparse linear algebra library.
   
This does not affect the covariance estimation algorithm
   which can still
use the EIGEN_SPARSE_QR algorithm.
   
===============================================================

-- Building without LAPACK.
-- Building without SuiteSparse.
-- Building without CXSparse.
   
===============================================================
   
Compiling without any sparse library: SuiteSparse, CXSparse
   
& Eigen (Sparse) are all disabled or unavailable.  No sparse
   linear solvers
(SPARSE_NORMAL_CHOLESKY & SPARSE_SCHUR)
   will be available
when Ceres is used.
   
===============================================================
-- Google Flags disabled; no tests or tools will be built!
-- Compiling minimal glog substitute into Ceres.
-- Using minimal glog substitute (include): internal/ceres/miniglog
-- Max log level for minimal glog substitute: 2
-- Building without OpenMP (disabling multithreading).
-- Looking for C++ include unordered_map
-- Looking for C++ include unordered_map - found
-- Performing Test HAVE_UNORDERED_MAP_IN_STD_NAMESPACE
-- Performing Test HAVE_UNORDERED_MAP_IN_STD_NAMESPACE - Success
-- Found unordered_map/set in std namespace.
-- Looking for C++ include memory
-- Looking for C++ include memory - found
-- Performing Test HAVE_SHARED_PTR_IN_STD_NAMESPACE
-- Performing Test HAVE_SHARED_PTR_IN_STD_NAMESPACE - Success
-- Found shared_ptr in std namespace using <memory> header.
   
==============================================================
   
Compiling Ceres using C++11.  This will result in a version
   of
Ceres that will require the use of C++11 in client code.
   
==============================================================
-- Building Ceres as a static library.
-- Enabling CERES_NO_LAPACK in Ceres config.h
-- Enabling CERES_NO_SUITESPARSE in Ceres config.h
-- Enabling CERES_NO_CXSPARSE in Ceres config.h
-- Enabling CERES_USE_CXX11 in Ceres config.h
-- Enabling CERES_NO_THREADS in Ceres config.h
-- Enabling CERES_STD_UNORDERED_MAP in Ceres config.h
CMake Error at cmake/AddCeresCXX11RequirementsToTarget.cmake:70 (target_compile_features):
  target_compile_features
no known features for CXX compiler

 
"Clang"

  version
9.0.0.9000039.
Call Stack (most recent call first):
 
internal/ceres/CMakeLists.txt:223 (add_ceres_cxx11_requirements_to_target)


-- Do not build any example.
-- Configuring incomplete, errors occurred!
See also "/Users/me/Projects/Clients/MyCompany/repo/iOS/lib/ceres/build/CMakeFiles/CMakeOutput.log".


Any suggestions would be much appreciated.

Rick M

unread,
Mar 21, 2018, 8:30:56 PM3/21/18
to Ceres Solver
Okay, I think this may be CMake just being confused. After blowing away all the generated files, I stopped getting this issue. False alarm.
Reply all
Reply to author
Forward
0 new messages