Re: [CMake] Correct settings to add docopt.cpp to target list

2014-12-05 Thread Adam Getchell
It turns out that CGAL's CGAL_CreateSingleSourceCGALProgram.cmake module
handles this nicely:

create_single_source_cgal_program( "src/cdt-docopt.cpp"
"src/docopt/docopt.cpp")

does the trick.

Thanks for your consideration!

On Thu, Dec 4, 2014 at 10:54 PM, Adam Getchell 
wrote:

> I should note that I'm doing an out of source build, and that for my
> project the following line works:
>
> ┌─[*adam*][Hapkido][*±*][docopt *✓*][~/CDT-plusplus/build]
>
> └─▪ clang++ --std=c++11 --stdlib=libc++ -I ../src/docopt
> ../src/docopt/docopt.cpp ../src/cdt-docopt.cpp -o cdt_docopt
>
> On Thu, Dec 4, 2014 at 9:30 PM, Adam Getchell 
> wrote:
>
>> Hello all,
>>
>> I’m trying to use the docopt.cpp parser for my project[1]:
>>
>> https://github.com/docopt/docopt.cpp
>>
>> The usual invocation to build works:
>>
>> ┌─[*adam*][Hapkido][*±*][docopt *✗*][~/CDT-plusplus/src/docopt]
>> └─▪ clang++ --std=c++11 --stdlib=libc++ -I . docopt.cpp
>> examples/naval_fate.cpp -o naval_fate
>>
>> So, I want to add docopt.cpp and have the compiler look for header files
>> in the same directory, and add that to my executable.
>>
>> So far, what I’ve attempted is to add the lines:
>>
>> include_directories (BEFORE "src/docopt")
>> add_library(docopt.cpp "src/docopt/docopt.cpp”)
>>
>> My program uses CGAL[2], and all of those library headers are
>> incorporated using the create_single_source_cgal_program function in the
>> CGAL_CreateSingleSourceCGALProgram.cmake module.
>>
>> The error messages I’m getting correspond to the ones I get when
>> docopt.cpp is not included:
>>
>> ┌─[*adam*][Hapkido][*±*][docopt *✗*][~/CDT-plusplus/src/docopt]
>> └─▪ clang++ --std=c++11 --stdlib=libc++ -I . examples/naval_fate.cpp -o
>> naval_fate
>> Undefined symbols for architecture x86_64:
>>   "docopt::docopt(std::__1::basic_string> std::__1::char_traits, std::__1::allocator > const&,
>> std::__1::vector,
>> std::__1::allocator >,
>> std::__1::allocator> std::__1::char_traits, std::__1::allocator > > > const&, bool,
>> std::__1::basic_string,
>> std::__1::allocator > const&, bool)", referenced from:
>>   _main in naval_fate-780283.o
>>   "docopt::operator<<(std::__1::basic_ostream> std::__1::char_traits >&, docopt::value const&)", referenced from:
>>   _main in naval_fate-780283.o
>> ld: symbol(s) not found for architecture x86_64
>> clang: error: linker command failed with exit code 1 (use -v to see
>> invocation)
>>
>> Compare to:
>>
>> ┌─[*adam*][Hapkido][*±*][docopt *✗*][~/CDT-plusplus]
>> └─▪ ./build.sh
>> -- The C compiler identification is AppleClang 6.0.0.654
>> -- The CXX compiler identification is AppleClang 6.0.0.654
>> -- Check for working C compiler using: Ninja
>> -- Check for working C compiler using: Ninja -- works
>> -- Detecting C compiler ABI info
>> -- Detecting C compiler ABI info - done
>> -- Check for working CXX compiler using: Ninja
>> -- Check for working CXX compiler using: Ninja -- works
>> -- Detecting CXX compiler ABI info
>> -- Detecting CXX compiler ABI info - done
>> -- Build type: Release
>> -- USING CXXFLAGS = ' -O3 -DNDEBUG'
>> -- USING EXEFLAGS = '
>> -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
>> '
>> -- Targetting Ninja
>> -- Using /usr/bin/c++ compiler.
>> -- DARWIN_VERSION=14
>> -- Mac Leopard detected
>> -- Requested component: Core
>> -- Requested component: MPFR
>> -- Requested component: GMP
>> -- Found Eigen3: /usr/local/include/eigen3 (found suitable version
>> "3.2.2", minimum required is "3.1.0")
>> -- Configuring done
>> -- Generating done
>> -- Build files have been written to: /Users/adam/CDT-plusplus/build
>> [10/13] Linking CXX executable cdt-docopt
>> FAILED: : && /usr/bin/c++   -O3 -DNDEBUG -Wl,-search_paths_first
>> -Wl,-headerpad_max_install_names
>> -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
>> CMakeFiles/cdt-docopt.dir/src/cdt-docopt.cpp.o  -o cdt-docopt
>> -L/Users/adam/gmock-1.7.0/lib/.libs
>> -L/Users/adam/gmock-1.7.0/gtest/lib/.libs /usr/local/lib/libmpfr.dylib
>> /usr/local/lib/libgmp.dylib /usr/local/lib/libCGAL_Core.dylib
>> /usr/local/lib/libCGAL.dylib /usr/local/lib/libboost_thread-mt.dylib
>> /usr/local/lib/libboost_system-mt.dylib /usr/local/lib/libCGAL_Core.dylib
>> /usr/local/lib/libCGAL.dylib /usr/local/lib/libboost_thread-mt.dylib
>> /usr/local/lib/libboost_system-mt.dylib
>> -Wl,-rpath,/Users/adam/gmock-1.7.0/lib/.libs
>> -Wl,-rpath,/Users/adam/gmock-1.7.0/gtest/lib/.libs && :
>> Undefined symbols for architecture x86_64:
>>   "docopt::docopt(std::__1::basic_string> std::__1::char_traits, std::__1::allocator > const&,
>> std::__1::vector,
>> std::__1::allocator >,
>> std::__1::allocator> std::__1::char_traits, std::__1::allocator > > > const&, bool,
>> std::__1::basic_string,
>> std::__1::allocator > const&, bool)", refe

Re: [CMake] Correct settings to add docopt.cpp to target list

2014-12-04 Thread Adam Getchell
I should note that I'm doing an out of source build, and that for my
project the following line works:

┌─[*adam*][Hapkido][*±*][docopt *✓*][~/CDT-plusplus/build]

└─▪ clang++ --std=c++11 --stdlib=libc++ -I ../src/docopt
../src/docopt/docopt.cpp ../src/cdt-docopt.cpp -o cdt_docopt

On Thu, Dec 4, 2014 at 9:30 PM, Adam Getchell 
wrote:

> Hello all,
>
> I’m trying to use the docopt.cpp parser for my project[1]:
>
> https://github.com/docopt/docopt.cpp
>
> The usual invocation to build works:
>
> ┌─[*adam*][Hapkido][*±*][docopt *✗*][~/CDT-plusplus/src/docopt]
> └─▪ clang++ --std=c++11 --stdlib=libc++ -I . docopt.cpp
> examples/naval_fate.cpp -o naval_fate
>
> So, I want to add docopt.cpp and have the compiler look for header files
> in the same directory, and add that to my executable.
>
> So far, what I’ve attempted is to add the lines:
>
> include_directories (BEFORE "src/docopt")
> add_library(docopt.cpp "src/docopt/docopt.cpp”)
>
> My program uses CGAL[2], and all of those library headers are incorporated
> using the create_single_source_cgal_program function in the
> CGAL_CreateSingleSourceCGALProgram.cmake module.
>
> The error messages I’m getting correspond to the ones I get when
> docopt.cpp is not included:
>
> ┌─[*adam*][Hapkido][*±*][docopt *✗*][~/CDT-plusplus/src/docopt]
> └─▪ clang++ --std=c++11 --stdlib=libc++ -I . examples/naval_fate.cpp -o
> naval_fate
> Undefined symbols for architecture x86_64:
>   "docopt::docopt(std::__1::basic_string std::__1::char_traits, std::__1::allocator > const&,
> std::__1::vector,
> std::__1::allocator >,
> std::__1::allocator std::__1::char_traits, std::__1::allocator > > > const&, bool,
> std::__1::basic_string,
> std::__1::allocator > const&, bool)", referenced from:
>   _main in naval_fate-780283.o
>   "docopt::operator<<(std::__1::basic_ostream std::__1::char_traits >&, docopt::value const&)", referenced from:
>   _main in naval_fate-780283.o
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
>
> Compare to:
>
> ┌─[*adam*][Hapkido][*±*][docopt *✗*][~/CDT-plusplus]
> └─▪ ./build.sh
> -- The C compiler identification is AppleClang 6.0.0.654
> -- The CXX compiler identification is AppleClang 6.0.0.654
> -- Check for working C compiler using: Ninja
> -- Check for working C compiler using: Ninja -- works
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working CXX compiler using: Ninja
> -- Check for working CXX compiler using: Ninja -- works
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Build type: Release
> -- USING CXXFLAGS = ' -O3 -DNDEBUG'
> -- USING EXEFLAGS = '
> -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
> '
> -- Targetting Ninja
> -- Using /usr/bin/c++ compiler.
> -- DARWIN_VERSION=14
> -- Mac Leopard detected
> -- Requested component: Core
> -- Requested component: MPFR
> -- Requested component: GMP
> -- Found Eigen3: /usr/local/include/eigen3 (found suitable version
> "3.2.2", minimum required is "3.1.0")
> -- Configuring done
> -- Generating done
> -- Build files have been written to: /Users/adam/CDT-plusplus/build
> [10/13] Linking CXX executable cdt-docopt
> FAILED: : && /usr/bin/c++   -O3 -DNDEBUG -Wl,-search_paths_first
> -Wl,-headerpad_max_install_names
> -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
> CMakeFiles/cdt-docopt.dir/src/cdt-docopt.cpp.o  -o cdt-docopt
> -L/Users/adam/gmock-1.7.0/lib/.libs
> -L/Users/adam/gmock-1.7.0/gtest/lib/.libs /usr/local/lib/libmpfr.dylib
> /usr/local/lib/libgmp.dylib /usr/local/lib/libCGAL_Core.dylib
> /usr/local/lib/libCGAL.dylib /usr/local/lib/libboost_thread-mt.dylib
> /usr/local/lib/libboost_system-mt.dylib /usr/local/lib/libCGAL_Core.dylib
> /usr/local/lib/libCGAL.dylib /usr/local/lib/libboost_thread-mt.dylib
> /usr/local/lib/libboost_system-mt.dylib
> -Wl,-rpath,/Users/adam/gmock-1.7.0/lib/.libs
> -Wl,-rpath,/Users/adam/gmock-1.7.0/gtest/lib/.libs && :
> Undefined symbols for architecture x86_64:
>   "docopt::docopt(std::__1::basic_string std::__1::char_traits, std::__1::allocator > const&,
> std::__1::vector,
> std::__1::allocator >,
> std::__1::allocator std::__1::char_traits, std::__1::allocator > > > const&, bool,
> std::__1::basic_string,
> std::__1::allocator > const&, bool)", referenced from:
>   _main in cdt-docopt.cpp.o
>   "docopt::operator<<(std::__1::basic_ostream std::__1::char_traits >&, docopt::value const&)", referenced from:
>   _main in cdt-docopt.cpp.o
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
> [10/13] Building CXX object
> CMakeFiles/unittests.dir/unittests/Tria