Creating Xcode project from Cmake contains unwanted compiler flags - c++

I've been unable to find a definitive answer, so apologies if the answer is out there.
I use cmake to generate project files as I tend to work cross-platform. On OSX/Xcode, I'm seeing unwanted compiler flags being used, specifically warning enable/disable. I like to compile with as many warnings on as possible, and set warnings as errors.
Consider the following:
File: CMakeLists.txt
cmake_minimum_required( VERSION 3.0 )
project( test )
set( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=c++14 )
add_compile_options( "-Werror" )
add_compile_options( "-Weverything" )
add_compile_options( "-Wno-c++98-compat-pedantic" )
add_compile_options( "-Wno-padded" )
add_executable( Test main.cpp )
target_link_libraries( Test libstdc++.dylib libc++.dylib )
File: main.cpp
#include <iostream>
int main( int argc, char * const argv[] )
{
(void)argc;
(void)argv;
std::cout << "Kittens." << std::endl;
return 0;
}
If I then run cmake:
cmake -G Xcode .
(normally I'd use a builds directory, but not here for simplicity).
Then build (from the command line):
cmake --build . --config Debug --target ALL_BUILD
The simple sample will compile. If I now look at the command used to compile main.cpp I see the following:
CompileC test.build/Debug/Test.build/Objects-normal/x86_64/main.o main.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
cd /Users/username/Development/test
export LANG=en_US.US-ASCII
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch x86_64 -fmessage-length=101 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -fcolor-diagnostics -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Debug\" -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.11 -g -Wno-sign-conversion -I/Users/username/Development/test/Debug/include -I/Users/username/Development/test/test.build/Debug/Test.build/DerivedSources/x86_64 -I/Users/username/Development/test/test.build/Debug/Test.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Users/username/Development/test/Debug -std=c++14 -Werror -Weverything -Wno-c++98-compat-pedantic -Wno-padded -MMD -MT dependencies -MF /Users/username/Development/test/test.build/Debug/Test.build/Objects-normal/x86_64/main.d --serialize-diagnostics /Users/username/Development/test/test.build/Debug/Test.build/Objects-normal/x86_64/main.dia -c /Users/username/Development/test/main.cpp -o /Users/username/Development/test/test.build/Debug/Test.build/Objects-normal/x86_64/main.o
The really annoying thing here is any of the -W options.
In my CMakeLists.txt I've clearly said I want all warnings, warnings treated as errors, and whitelisted a couple of warnings.
However, if I strip out all the -W options in the compile command, I see (in addition to what I asked for):
-Wno-trigraphs
-Wno-missing-field-initializers
-Wno-missing-prototypes
-Wno-return-type
-Wno-non-virtual-dtor
-Wno-overloaded-virtual
-Wno-exit-time-destructors
-Wno-missing-braces
-Wparentheses
-Wswitch
-Wno-unused-function
-Wno-unused-label
-Wno-unused-parameter
-Wno-unused-variable
-Wunused-value
-Wno-empty-body
-Wno-uninitialized
-Wno-unknown-pragmas
-Wno-shadow
-Wno-four-char-constants
-Wno-conversion
-Wno-constant-conversion
-Wno-int-conversion
-Wno-bool-conversion
-Wno-enum-conversion
-Wno-shorten-64-to-32
-Wno-newline-eof
-Wno-c++11-extensions
-Winvalid-offsetof
-Wno-sign-conversion
-Wmost
-Wno-four-char-constants
-Wno-unknown-pragmas
Some of those things listed I really do not want disabled. I really want just the -W options I specified in the cmake file being used for compilation, but I can't see who is injecting all these extra things and from where.
Is there any way I can get cmake to tell xcode not to include all these extra -W options from compilation?
Note: using:
cmake 3.5.2
Apple LLVM version 7.3.0 (clang-703.0.31)

At project() call, CMake detects compiler (you may see corresponded messages when cmake is executed) and sets default flags for it. These flags are stored in variables CMAKE_CXX_FLAGS (common) and CMAKE_CXX_FLAGS_<CONFIG> (configuration-specific).
You may modify these variables as you want:
1) completely rewrite them
set(CMAKE_CXX_FLAGS "<desired-value>")
2) append new flags to them
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <additional-flags>")
3) remove specific values from them
string(REPLACE "<unwanted-flag>" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
# or
string(REGEX REPLACE "<unwanted-flag-regex>" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
and so on.

Related

Linker PIC error when statically linking a library built with PIC enabled

I'm building a library (libproj) using g++-9 and CMake (on Xenial, on Travis), so I can statically link it in a Rust crate. My build.rs sets up and runs CMake with the following config:
cmake proj-7.0.1
-DBUILD_SHARED_LIBS=ON
-DBUILD_TESTING=OFF
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_FLAGS="-std=c++11 -fPIC"
-DCMAKE_INSTALL_PREFIX=[path snipped]/out
-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64
-DCMAKE_C_COMPILER=/usr/bin/gcc-9
-DCMAKE_CXX_COMPILER=/usr/bin/g++-9
-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64
-DCMAKE_ASM_COMPILER=/usr/bin/gcc-9
Which builds and installs libproj successfully.
I then tell cargo to statically link it:
cargo:root=[path snipped]/out
cargo:rustc-link-search=native=[path snipped]/out/lib
cargo:rustc-link-lib=static=proj
However, the link step fails, saying I can't use relocation in a shared object:
note: /usr/bin/ld: [path snipped]/out/lib/libproj.a(4D_api.cpp.o): relocation
R_X86_64_32 against `.rodata.str1.8' can not be used when making a
shared object; recompile with -fPIC`
[path snipped]/out/lib/libproj.a(4D_api.cpp.o): error adding symbols: Bad value
collect2: error: ld returned 1 exit status
What am I doing wrong here? I've also tried to build libproj as a static lib by setting BUILD_SHARED_LIBS to OFF as per the install instructions, but that hasn't had any effect.
UPDATE:
I've managed to enable PIC for g++ (by default it's only enabled for gcc)
running: "cmake" "-Wdev" "--debug-output" "[snipped]/proj-7.0.1" "-DCMAKE_CXX_FLAGS=-std=c++11" "-DCMAKE_CXX_FLAGS=-fPIC" "-DBUILD_SHARED_LIBS=OFF" "-DCMAKE_INSTALL_PREFIX=[snipped]/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/gcc-9" "-DCMAKE_CXX_COMPILER=/usr/bin/g++-9" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/gcc-9" "-DCMAKE_BUILD_TYPE=Debug" "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
Resulting in the following g++-9 invocation, which includes -fPIC:
/usr/bin/g++-9 -DCURL_ENABLED -DMUTEX_pthread -DPROJ_LIB=\"/[snip]/proj\" -DTIFF_ENABLED -I/[snip]/src -I/[snip]/include -I/[snip]/src -I/usr/include/x86_64-linux-gnu -fPIC -g -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security -std=c++11 -o CMakeFiles/proj.dir/aasincos.cpp.o -c /[snip]/proj/proj-7.0.1/src/aasincos.cpp
However, I know get a completely different error (thousands of lines), that looks like my static library hasn't been correctly linked to the c++11 stdlib:
Error:
undefined reference to std::allocator<char>::allocator()
UPDATE 2:
I've managed to remove the -nodefaultlibs flag from ld. The latest g++ invocation:
/usr/bin/g++-9 -I/[snipped]/src -I/[snipped]/include -I/[snipped]/src -isystem /[snipped]/include -isystem /[snipped]/googletest -fPIC -g -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security -pthread -std=c++11 -o CMakeFiles/proj_context_test.dir/proj_context_test.cpp.o -c /[snipped]/proj_context_test.cpp
And I've managed to add lstdc++ to the linker invocation:
"cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/[snip]/lib" "/home/travis/build/georust/proj-sys/target/debug/deps/proj_sys-95cbd73f2c3f0bde.20tasg77xuhsj5z6.rcgu.o" "/home/travis/build/georust/proj-sys/target/debug/deps/proj_sys-95cbd73f2c3f0bde.57y4784ihm3qw715.rcgu.o" "-o" "/[snip]/deps/proj_sys-95cbd73f2c3f0bde" "/home/travis/build/georust/proj-sys/target/debug/deps/proj_sys-95cbd73f2c3f0bde.3kiafs23968zh4mj.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-L" "/home/travis/build/georust/proj-sys/target/debug/deps" "-L" "/home/travis/build/georust/proj-sys/target/debug/build/proj-sys-aff2ac9d43b77886/out/lib" "-L" "/home/travis/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-lsqlite3" "-lcurl" "-ltiff" "-lstdc++" "-Wl,-Bstatic" "-Wl,--whole-archive" "-lproj" "-Wl,--no-whole-archive" [trimmed rlib details] "-Wl,--end-group" "/home/travis/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-2541f1e09df1c67d.rlib" "-Wl,-Bdynamic" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
But the undefined reference error remains.
As I can see from your example, you have quotation marks around CMAKE_CXX_FLAGS and do not have ones around CMAKE_C_FLAGS. It looks odd.
I have built libgproj myself with cmake + your flags and with make VERBOSE=1.
I can see, that C-files compiled without fPIC, m64 and fdata-sections. I suppose, that the cause is in the quotation marks around CMAKE_C_FLAGS. I saw your log in Travis, and there is configuration for cmake from cargo:
"cmake" "/home/travis/build/georust/proj-sys/PROJSRC/proj/proj-7.0.1" "-DBUILD_SHARED_LIBS=ON" "-DBUILD_TESTING=OFF" "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_CXX_FLAGS=-std=c++11 -fPIC" "-DCMAKE_INSTALL_PREFIX=/home/travis/build/georust/proj-sys/target/debug/build/proj-sys-03a5fe6428bb060a/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/gcc-9" "-DCMAKE_CXX_COMPILER=/usr/bin/g++-9" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/gcc-9"
Note, that -DCMAKE_C_FLAGS and CMAKE_CXX_FLAGS escaped with their values, and not values by itself. I suppose, that these options become in the shell:
cmake -DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64 -DCVMAKE_CXX_FLAGS=-std=c++11 -fPIC
I have tried this command, without quotation marks and cmake just ignored unknown options. So it will not fail.
I suggest you to add cmake option -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON to cmake configuration or VERBOSE=1 to the make options, if you can, and then you can see real compile options passed to gcc in Travis.
You will see somethig like this:
[ 19%] Building C object src/CMakeFiles/proj.dir/wkt1_generated_parser.c.o
cd [some path]/PROJ/cmake_build/src && /usr/bin/cc -DCURL_ENABLED -DMUTEX_pthread
-DPROJ_LIB=\"/usr/local/share/proj\" -DTIFF_ENABLED -I[some path]PROJ/src -I[some
path]/PROJ/include -I[some path]/PROJ/cmake_build/src -O3 -DNDEBUG -
fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-
declarations -Wformat -Wformat-security -Wmissing-prototypes -std=c99 -o
CMakeFiles/proj.dir/wkt1_generated_parser.c.o -c [some
path]/PROJ/src/wkt1_generated_parser.c
Conclusion:
You can try adding verbosity to see real compile options.
You can try to escape options properly, if it's necessary after first step.
Also I want to note, that SHARED_BUILD_LIBS=ON in my test forbids building static lib, which you want to link. When I set shared libs building setting option to OFF, static lib was built.

CMAKE thrift generated files compiler options

I'm trying to compile generated thrift code into my source. The thrift stuff is generated into CMAKE_CURRENT_BINARY_DIR then I add generated cpp files into my library, with SET_SOURCE_FILES_PROPERTIES(${ThriftGeneratedFiles} PROPERTIES
GENERATED 1
COMPILE_OPTIONS ""
)
Then I add the include path to generated files using TARGET_INCLUDE_DIRECTORIES with SYSTEM keyword. When I'm trying to compile it, since my module compiles with -Wsuggest-override it fails to compile the generated cpp file with can be marked override [-Werror=suggest-override]. I dont get why, isnt the SET_SOURCE_FILES_PROPERTIES should solve this problem?CMake file snippet
ADD_COMPILE_OPTIONS(
...
...
-Wsuggest-override
...
...
)
FIND_PROGRAM(THRIFT_COMPILER thrift ${_VCPKG_ROOT_DIR}/buildtrees/thrift/x64-linux-rel/compiler/cpp/bin/ NO_DEFAULT_PATH)
SET(ThriftOutputDir ${CMAKE_CURRENT_BINARY_DIR}/thrift/gen/)
FILE(MAKE_DIRECTORY ${ThriftOutputDir})
SET(ThriftGeneratedFiles
${ThriftOutputDir}/MyServer.cpp
${ThriftOutputDir}/My_types.cpp
${ThriftOutputDir}/My_constants.cpp
)
ADD_CUSTOM_COMMAND(
OUTPUT
generated.timestamp
COMMAND
${THRIFT_COMPILER} --gen cpp:no_default_operators -out ${ThriftOutputDir} ${CMAKE_SOURCE_DIR}/protocols/My.thrift
WORKING_DIRECTORY
${CMAKE_BINARY_DIR}
COMMENT "Generating source code from Thrift definition")
ADD_CUSTOM_TARGET(RunThriftCompiler
DEPENDS
generated.timestamp
COMMENT "Checking if re-generation is required")
ADD_LIBRARY(MyProject SHARED
${SOURCES}
${ThriftGeneratedFiles}
)
SET_SOURCE_FILES_PROPERTIES(${ThriftGeneratedFiles} PROPERTIES
GENERATED 1
COMPILE_OPTIONS ""
)
TARGET_INCLUDE_DIRECTORIES(MyProject SYSTEM PRIVATE
${PROTOBUF_INCLUDE_DIR}
${ThriftOutputDir}
)
Compilation message:
cd
/home/user/Development/Project/Project16/cmake-build-debug/lib/MyProject
&& /usr/bin/c++ -DCARES_STATICLIB -DMyProject_EXPORTS
-I/home/user/Development/Project/Project16/lib/include/MyProject -I/home/user/Development/Project/Project16/lib/include -isystem /home/user/Development/Project/Project16/cmake-build-debug/ext/etcd
-isystem /home/user/Development/Project/Project16/cmake-build-debug/protocols
-isystem /home/user/Development/Project/Project16/ext/spdk/include -isystem /home/user/Development/vcpkg/installed/x64-linux/include -isystem /home/user/Development/Project/Project16/cmake-build-debug/lib/MyProject/thrift/gen
-g -fPIC -include MyProject.h -fPIC -fstrict-aliasing -ffunction-sections -fno-omit-frame-pointer -mtune=core-avx-i -mavx -march=core-avx-i -fno-plt -g -fstack-protector-all -fstack-check -rdynamic -Wno-error=unused-parameter -Wno-error=unused -Wno-error=unused-but-set-parameter -Wshadow -Werror=address -Werror=array-bounds -Werror=char-subscripts -Werror=enum-compare -Werror=implicit-int -Werror=implicit-function-declaration -Werror=comment -Werror=format -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-sign -Werror=reorder -Werror=return-type -Werror=sequence-point -Wstrict-aliasing=1 -Werror=strict-overflow=1 -Werror=switch -Werror=trigraphs -Werror=uninitialized -Werror=unknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Werror=volatile-register-var -Werror=clobbered -Werror=empty-body -Werror=ignored-qualifiers -Werror=sign-compare -Werror=type-limits -Werror -Wempty-body -Wuninitialized -Winit-self -Wmissing-declarations -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare -Wtype-limits -Waddress -Wmisleading-indentation -Wshift-negative-value -Wtautological-compare -Wnull-dereference -Wduplicated-cond -Wnonnull -Wnonnull-compare -Wignored-qualifiers -Wmissing-braces -Wmissing-include-dirs -Wparentheses -Wsequence-point -Wno-return-local-addr -Wreturn-type -Wtrigraphs -Wunused-local-typedefs -Winvalid-memory-model -Wmaybe-uninitialized -Wunknown-pragmas -Wframe-address -Wtrampolines -Wfloat-equal -Wno-free-nonheap-object -Wold-style-cast -Wunused-parameter -Wunused -Wunused-but-set-parameter -Wframe-larger-than=1100000 -Wpointer-arith -Wwrite-strings -Wclobbered -Wenum-compare -Wsizeof-pointer-memaccess -Wmemset-transposed-args -Wlogical-op -Wredundant-decls -Winvalid-pch -Wvarargs -Wvector-operation-performance -Wvolatile-register-var -Wdisabled-optimization -Wcast-align -Wcast-qual -Wnon-virtual-dtor -Woverloaded-virtual -Wodr -Wplacement-new=2 -Wdelete-incomplete -Wsized-deallocation -Wno-virtual-move-assign -Wsuggest-override -DBOOST_COROUTINES_NO_DEPRECATION_WARNING -DGTEST_LINKED_AS_SHARED_LIBRARY -D_GNU_SOURCE -DIGNORE_VALIDATION= -std=gnu++1z -o CMakeFiles/MyProject.dir/thrift/gen/MyProject_constants.cpp.o -c
/home/user/Development/Project/Project16/cmake-build-debug/lib/MyProject/thrift/gen/MyProject_constants.cpp
In file included from
/home/user/Development/Project/Project16/cmake-build-debug/lib/MyProject/thrift/gen/MyProject_types.cpp:7:0:
/home/user/Development/Project/Project16/cmake-build-debug/lib/MyProject/thrift/gen/MyProject_types.h:72:15:
error: ‘virtual const char* MyProject::ThriftCapiException::what()
const’ can be marked override [-Werror=suggest-override] const
char* what() const throw();
As seen, all compilation flags are applied.
Properties on source files like COMPILE_DEFINITIONS and COMPILE_FLAGS may only add a compile option. Using these properties it is impossible to overwrite (delete) compile options for the target. (And options added by ADD_COMPILE_OPTIONS are eventually assigned for the target).
You may create an OBJECT library from thrift-generated sources. For that library you may set (that is, clear) COMPILE_OPTIONS property. Resulted object files can be used then in your main library:
# Object files for thrift-generated sources
add_library(thriftGenerated OBJECT ${ThriftGeneratedFiles})
# For these files clear compile options which has been set before
set_property(TARGET thriftGenerated PROPERTY COMPILE_OPTIONS)
# Then use object files for thrift-generated sources in other library
add_library(MyProject SHARED
${SOURCES}
$<TARGET_OBJECTS:thriftGenerated>
)

Compilation error when using Xcode 9.0 with clang (cannot specify -o when generating multiple output files)

I updated my Xcode yesterday (version 9.0) and since then I cannot compile my code with clang anymore. It works great with with apple native compiler, but gives a compilation error with clang from macports. I will explain with more details now...
I usually use clang 4.0 because it has openmp support and I change in Xcode by creating a user-defined setting as in the following figure.
Image with how to use clang 4.0 from macports in Xcode
This has been working perfectly for some time until I updated to Xcode 9.0. Now, I get the following error from clang compiler:
cannot specify -o when generating multiple output files.
I researched a bit and a lot of people say this is because you may have .h files in the compilation table. I double checked and this is not my case. I also would think that this error would have happened with and older Xcode version.
Next, I am attaching the complete compilation command given by Xcode (it's a bit big though!).
CompileC /Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/ISET.build/Debug/scieng.build/Objects-normal/x86_64/ComplexFloat.o SciEng/Algebra/ComplexFloat.C normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
cd /Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver
export LANG=en_US.US-ASCII
/opt/local/bin/clang-mp-4.0 -x c++ -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Debug\" -DVECLIB_MAXIMUM_THREADS=8 -DPARALLEL_ON -DNUM_PROC=8 -DUSE_VTK -DvtkDomainsChemistry_AUTOINIT=1(vtkDomainsChemistryOpenGL2) -DvtkRenderingContext2D_AUTOINIT=1(vtkRenderingContextOpenGL2) -DvtkRenderingCore_AUTOINIT=3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2) -DvtkRenderingOpenGL2_AUTOINIT=1(vtkRenderingGL2PSOpenGL2) -DvtkRenderingVolume_AUTOINIT=1(vtkRenderingVolumeOpenGL2) -DUSE_CGAL -DCGAL_USE_MPFR -DCGAL_USE_GMP -DUSE_CGAL_EXACT_ARITHMETIC -DMKL_VERSION_11 -DUSE_PARDISO_MKL -DMKL_NUM_THREADS=8 -DXLC_QNOTEMPINC -DNO_IMPLICIT_TEMPLATE -DSCIENG_CHECK_SUBSCRIPTS -DBOOST_DEBUG=1 -DSET_DEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.13 -g -Wno-sign-conversion -Wno-infinite-recursion -Wno-move -Wno-comma -Wno-block-capture-autoreleasing -Wno-strict-prototypes -Wno-range-loop-analysis -index-store-path /Users/Nathan/Library/Developer/Xcode/DerivedData/ISET-eireryvadmfrwyarbuzbnkopwhid/Index/DataStore -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/Debug/include -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Algebra -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Array -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/AutoDeriv -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/DataModeling -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Function -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/LapackWrap -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/SciEng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Units -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Vector -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/include -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/analysis -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/cholmod -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/cosys -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crackmg2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crgeoeng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crgeoeng2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crgrphysics -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/extract -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/fiber_gfem -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/grgeoeng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/integration -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/ma27solver -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/material -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/material2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/mesh -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/mesh2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/pardiso -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/post -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/pre -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/python -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/renumber -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/tNewtonRaphason -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/topology -I/opt/local/include -I/opt/local/include/vtk-7.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/python2.7 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel -I/Users/Nathan/Documents/Programming/CGAL_CleanVersions/CGAL-4.10/compileXcode/include -I/Users/Nathan/Documents/Programming/CGAL_CleanVersions/CGAL-4.10/include -I/opt/intel/compilers_and_libraries_2016.2.146/mac/mkl/include -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/ISET.build/Debug/scieng.build/DerivedSources/x86_64 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/ISET.build/Debug/scieng.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/Debug -m64 -fopenmp -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Algebra -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Array -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/AutoDeriv -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/DataModeling -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Function -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/LapackWrap -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/SciEng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Units -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Vector -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/include -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/analysis -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/cholmod -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/cosys -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crackmg2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crgeoeng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crgeoeng2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/crgrphysics -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/extract -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/fiber_gfem -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/grgeoeng -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/integration -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/ma27solver -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/material -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/material2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/mesh -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/mesh2 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/pardiso -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/post -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/pre -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/python -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/renumber -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/tNewtonRaphason -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/topology -isystem /opt/local/include -I/opt/local/include/vtk-7.1 -I/usr/include/python2.7 -I/Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel -I/Users/Nathan/Documents/Programming/CGAL_CleanVersions/CGAL-4.10/compileXcode/include -I/Users/Nathan/Documents/Programming/CGAL_CleanVersions/CGAL-4.10/include -I/opt/intel/compilers_and_libraries_2016.2.146/mac/mkl/include -MMD -MT dependencies -MF /Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/ISET.build/Debug/scieng.build/Objects-normal/x86_64/ComplexFloat.d --serialize-diagnostics /Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/ISET.build/Debug/scieng.build/Objects-normal/x86_64/ComplexFloat.dia -c /Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/SetSolver/SciEng/Algebra/ComplexFloat.C -o /Users/Nathan/Documents/Programming/ISET_CoupledFormulationMerged/ProjectXcodeParallel/lib/ISET.build/Debug/scieng.build/Objects-normal/x86_64/ComplexFloat.o
Note: I use CMake to generate the project.
I can supply any more information that might be needed
Thanks for the help!
Nathan
Xcode 9.0 adds -index-store-path to the build command. It's not supported in clang yet. See this explanation.
You can remove it by disabling the build option Index-While-Building Functionality in Xcode.

What could cause clang to not find the unordered_map header?

I'm trying to compile a program I found on the web using Clang++. The Makefile generates this command:
clang++ -c -arch x86_64 -msse3 -std=c++11 -stdlib=libstdc++
-Wno-missing-field-initializers -Wno-missing-prototypes -Wreturn-type
-Wno-non-virtual-dtor -Wno-exit-time-destructors -Wformat -Wmissing-braces
-Wparentheses -Wno-switch -Wunused-function -Wunused-label -Wno-unused-parameter
-Wunused-variable -Wunused-value -Wno-empty-body -Wuninitialized -Wunknown-pragmas
-Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion
-Wint-conversion -Wno-shorten-64-to-32 -Wenum-conversion -Wno-newline-eof
-Wno-c++11-extensions -Wno-logical-op-parentheses -Wno-trigraphs
-Wno-invalid-offsetof -Wno-sign-conversion -Wdeprecated-declarations
-fmessage-length=0 -fno-exceptions -fstrict-aliasing -fvisibility=hidden
-fvisibility-inlines-hidden -funsafe-math-optimizations -ftrapping-math -fno-rtti
-fpascal-strings -fasm-blocks -O3 -Iinclude/ src/main.cpp
But I get
src/main.cpp:23:10: fatal error: 'unordered_map' file not found
#include <unordered_map>
^
1 error generated.
If I compile a simple program that includes <unordered_map> running clang++ test.cpp, it compiles fine.
I'm on
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix
I had the same issue when compiling glogg.
As the comments have pointed out. it was stdlib.
In the makefile after running qmake. Change this line from
CXXFLAGS = -g -Wextra -std=c++11 -DGLOGG_VERSION=\"`cat .tarball-version`\" -O2 -arch x86_64 -Wall -W $(DEFINES)
To this line below
CXXFLAGS = -g -Wextra -std=c++11 -stdlib=libc++ -DGLOGG_VERSION=\"`cat .tarball-version`\" -O2 -arch x86_64 -Wall -W $(DEFINES)
notice "-stdlib=libc++" was specified in the cxxflags. It's autospecified in the linker flags, I guess it also needs to be specified in for the C++ flags.
It says -Wno-c++11-extensions. What wrote that makefile?

Expression is not an integer constant expression

I am using xcode 4.2.1, Apple LLVM compiler 3.0.
Project cleans successfully in xcode and builds successfully from the command line. The problem is the project fails to build in xcode. I feel like I am missing something in my xcode configuration. I have made no edits to the original source I pulled down.
From the log navigator:
CompileC /Developer/Code/blender-build/cmake/source/blender/blenkernel/Blender.build/Debug/bf_blenkernel.build/Objects-normal/x86_64/idcode.o source/blender/blenkernel/intern/idcode.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler
cd /Developer/Code/blender-build/blender
setenv LANG en_US.US-ASCII
/Developer/usr/bin/clang -x c -arch x86_64 -fmessage-length=0 -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -O0 -Wno-return-type -Wparentheses -Wswitch -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-shorten-64-to-32 "-DCMAKE_INTDIR=\"Debug\"" -DHAVE_STDBOOL_H -D__SSE__ -D__MMX__ -D__SSE2__ -D__LITTLE_ENDIAN__ -DOPJ_STATIC -DGLEW_STATIC -DWITH_AUDASPACE -DWITH_BULLET -DWITH_OPENEXR -DWITH_TIFF -DWITH_OPENJPEG -DWITH_DDS -DWITH_CINEON -DWITH_FRAMESERVER -DWITH_HDR -DWITH_AVI -DWITH_QUICKTIME -DWITH_PYTHON -DWITH_PYTHON_SECURITY -DWITH_MOD_FLUID -DWITH_SMOKE -DWITH_LZO -DWITH_LZMA -DWITH_GAMEENGINE -DWITH_LIBMV -DFFTW3=1 -DWITH_INTERNATIONAL -DWITH_FREESTYLE -DDEBUG -D_DEBUG -isysroot /Developer/SDKs/MacOSX10.7.sdk -fasm-blocks -mmacosx-version-min=10.6 -gdwarf-2 -Wno-sign-conversion -I/Developer/Code/blender-build/cmake/lib/Debug/include -I/Developer/Code/blender-build/blender/source/blender/blenkernel -I/Developer/Code/blender-build/blender/source/blender/blenfont -I/Developer/Code/blender-build/blender/source/blender/blenlib -I/Developer/Code/blender-build/blender/source/blender/blenloader -I/Developer/Code/blender-build/blender/source/blender/gpu -I/Developer/Code/blender-build/blender/source/blender/ikplugin -I/Developer/Code/blender-build/blender/source/blender/imbuf -I/Developer/Code/blender-build/blender/source/blender/makesdna -I/Developer/Code/blender-build/blender/source/blender/makesrna -I/Developer/Code/blender-build/blender/source/blender/bmesh -I/Developer/Code/blender-build/blender/source/blender/modifiers -I/Developer/Code/blender-build/blender/source/blender/nodes -I/Developer/Code/blender-build/blender/source/blender/render/extern/include -I/Developer/Code/blender-build/blender/intern/guardedalloc -I/Developer/Code/blender-build/blender/intern/iksolver/extern -I/Developer/Code/blender-build/blender/intern/memutil -I/Developer/Code/blender-build/blender/intern/mikktspace -I/Developer/Code/blender-build/blender/intern/raskter -I/Developer/Code/blender-build/blender/intern/smoke/extern -I/Developer/Code/blender-build/blender/extern/libmv -I/Developer/Code/blender-build/blender/intern/atomic -I/Developer/Code/blender-build/blender/source/blender/windowmanager -I/Developer/Code/blender-build/blender/intern/audaspace/intern -I/Developer/Code/blender-build/blender/intern/rigidbody -I/Developer/Code/blender-build/blender/source/blender/avi -I/Developer/Code/blender-build/blender/source/blender/quicktime -I/Developer/Code/blender-build/blender/source/blender/python -I/Developer/Code/blender-build/blender/intern/elbeem/extern -I/Developer/Code/blender-build/blender/extern/glew/include -I/Developer/Code/blender-build/blender/extern/bullet2/src -I/Developer/Code/blender-build/blender/extern/lzo/minilzo -I/Developer/Code/blender-build/blender/extern/lzma -I/Developer/Code/blender-build/blender/extern/recastnavigation -I/Developer/Code/blender-build/lib/darwin-9.x.universal/fftw3/include -I/Developer/Code/blender-build/cmake/source/blender/blenkernel/Blender.build/Debug/bf_blenkernel.build/DerivedSources/x86_64 -I/Developer/Code/blender-build/cmake/source/blender/blenkernel/Blender.build/Debug/bf_blenkernel.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Developer/Code/blender-build/cmake/lib/Debug -F/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks -Wall -Wcast-align -Werror=declaration-after-statement -Werror=implicit-function-declaration -Werror=return-type -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings -Wundef -Winit-self -Wnonnull -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -msse2 -msse -pipe -funsigned-char -fno-strict-aliasing -MMD -MT dependencies -MF /Developer/Code/blender-build/cmake/source/blender/blenkernel/Blender.build/Debug/bf_blenkernel.build/Objects-normal/x86_64/idcode.d -c /Developer/Code/blender-build/blender/source/blender/blenkernel/intern/idcode.c -o /Developer/Code/blender-build/cmake/source/blender/blenkernel/Blender.build/Debug/bf_blenkernel.build/Objects-normal/x86_64/idcode.o
Error:
/Developer/Code/blender-build/blender/source/blender/blenkernel/intern/idcode.c:90:10:{90:10-90:29}: error: expression is not an integer constant expression [3]
int i = ARRAY_SIZE(idtypes);
^~~~~~~~~~~~~~~~~~~
/Developer/Code/blender-build/blender/source/blender/blenlib/BLI_utildefines.h:353:36: note: instantiated from:
((sizeof(struct {int isnt_array : ((void *)&(arr) == &(arr)[0]);}) * 0) + \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
What can I do to get a clean build?
I upgraded xcode to version 4.6.3. The compiler updated to LLVM 4.2 and these problems were resolved. Otherwise I don't know why the previous version was failing.