marcuswendt/FieldKit.cpp

boost type error in Sketchpad Example

Closed this issue · 2 comments

I managed to compile FieldKit and ScriptKit.

With boost 1.44 and the latest Cinder checkout, I'm getting a template type error in boost::filesystem3::path, which seems to stem from Cinder.h. I'm not sure what dependencies I haven't met, or if I have non matching static libs, but here is the full error message from Xcode:

CompileC build/SketchPad.build/Debug/SketchPad.build/Objects-normal/i386/SketchPad.o ../src/SketchPad.cpp normal i386 c++ com.apple.compilers.llvm.clang.1_0.compiler
cd /Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode
setenv LANG en_US.US-ASCII
/Developer/usr/bin/clang -x c++ -arch i386 -fmessage-length=0 -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -Wc++0x-extensions -isysroot /Developer/SDKs/MacOSX10.6.sdk -fasm-blocks -mmacosx-version-min=10.6 -gdwarf-2 -Wno-sign-conversion -iquote /Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/SketchPad-generated-files.hmap -I/Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/SketchPad-own-target-headers.hmap -I/Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/SketchPad-all-target-headers.hmap -iquote /Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/SketchPad-project-headers.hmap -iquote../../../../cinder/include -iquote../../../include -iquote../include -iquote../src -I/Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/Debug/include -I../../../../v8/include -I../../../../cinder/boost -I../../../../../boost_1_44_0 -I/Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/DerivedSources/i386 -I/Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/DerivedSources -F/Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/Debug -include /var/folders/l1/243crs0x32zgbllfh0ckbnmh0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/prefix-gmgtjocculkorhfniuzzbhwpsudm/prefix.pch -MMD -MT dependencies -MF /Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/Objects-normal/i386/SketchPad.d -c /Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/../src/SketchPad.cpp -o /Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/build/SketchPad.build/Debug/SketchPad.build/Objects-normal/i386/SketchPad.o

In file included from /Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/tr1/../memory:52:
In file included from /Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/tr1/memory:38:
In file included from ../../../../cinder/include/cinder/Cinder.h:65:
In file included from ../../../../cinder/include/cinder/app/App.h:25:
In file included from ../../../../cinder/include/cinder/app/AppBasic.h:25:
In file included from ../src/SketchPad.h:12:
In file included from /Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/../src/SketchPad.cpp:10:
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_algobase.h:268:16:{268:18-268:26}: error: assigning to 'char' from incompatible type 'const boost::filesystem3::path' [3]
*__result = *__first;
^ ~~~~~~~~
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_algobase.h:315:14: note: in instantiation of function template specialization 'std::__copy<false, std::bidirectional_iterator_tag>::copy<boost::filesystem3::path::iterator, std::_Deque_iterator<char, char &, char *> >' requested here [3]
return std::__copy<__simple, _Category>::copy(__first, __last, __result);
^
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_algobase.h:340:18: note: in instantiation of function template specialization 'std::__copy_aux<boost::filesystem3::path::iterator, std::_Deque_iterator<char, char &, char *> >' requested here [3]
{ return std::__copy_aux(__first, __last, __result); }
^
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_algobase.h:400:15: note: in instantiation of function template specialization 'std::__copy_normal<false, false>::__copy_n<boost::filesystem3::path::iterator, std::_Deque_iterator<char, char &, char *> >' requested here [3]
return std::__copy_normal<__in, __out>::__copy_n(__first, __last,
^
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_uninitialized.h:75:14: note: in instantiation of function template specialization 'std::copy<boost::filesystem3::path::iterator, std::_Deque_iterator<char, char &, char *> >' requested here [3]
{ return std::copy(__first, __last, __result); }
^
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_uninitialized.h:113:14: note: in instantiation of function template specialization 'std::__uninitialized_copy_aux<boost::filesystem3::path::iterator, std::_Deque_iterator<char, char &, char *> >' requested here [3]
return std::__uninitialized_copy_aux(__first, __last, __result,
^
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_uninitialized.h:254:14: note: (skipping 5 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) [3]
{ return std::uninitialized_copy(__first, __last, __result); }
^
../../../../cinder/boost/boost/algorithm/string/detail/find_format_all.hpp:222:21: note: in instantiation of function template specialization 'boost::algorithm::detail::copy_to_storage<std::deque<char, std::allocator >, boost::iterator_rangeboost::filesystem3::path::iterator >' requested here [3]
::boost::algorithm::detail::copy_to_storage( Storage, M.format_result() );
^
../../../../cinder/boost/boost/algorithm/string/detail/find_format_all.hpp:260:17: note: in instantiation of function template specialization 'boost::algorithm::detail::find_format_all_impl2std::basic_string<char, boost::algorithm::detail::first_finderF<const char *, boost::algorithm::is_equal>, boost::algorithm::detail::const_formatFboost::iterator_range<boost::filesystem3::path::iterator >, boost::iterator_range<__gnu_cxx::__normal_iterator<char *, std::basic_string > >, boost::iterator_rangeboost::filesystem3::path::iterator >' requested here [3]
::boost::algorithm::detail::find_format_all_impl2(
^
../../../../cinder/boost/boost/algorithm/string/find_format.hpp:268:13: note: in instantiation of function template specialization 'boost::algorithm::detail::find_format_all_implstd::basic_string<char, boost::algorithm::detail::first_finderF<const char *, boost::algorithm::is_equal>, boost::algorithm::detail::const_formatFboost::iterator_range<boost::filesystem3::path::iterator >, boost::iterator_range<__gnu_cxx::__normal_iterator<char *, std::basic_string > > >' requested here [3]
detail::find_format_all_impl(
^
../../../../cinder/boost/boost/algorithm/string/replace.hpp:654:13: note: in instantiation of function template specialization 'boost::algorithm::find_format_allstd::basic_string<char, boost::algorithm::detail::first_finderF<const char *, boost::algorithm::is_equal>, boost::algorithm::detail::const_formatFboost::iterator_range<boost::filesystem3::path::iterator > >' requested here [3]
::boost::algorithm::find_format_all(
^
/Users/r/code/cinder/FieldKit/Libraries/FieldKit.cpp/samples/SketchPad/xcode/../src/SketchPad.cpp:89:5: note: in instantiation of function template specialization 'boost::algorithm::replace_allstd::basic_string<char, char [5], boost::filesystem3::path>' requested here [3]
boost::algorithm::replace_all(script, "$APP", cinder::app::getAppPath());
^
1 error generated.

Sorry for the slow reply — Finally had time to look into this.
The problem is caused by a change in Cinders app::getAppPath() function — boost replace_all wants a string and not a boost::path object. Ive fixed this in the updated Sketchpad example.

Thanks for fixing it, got everything compiling now. Cheers