title: Unable to link against Boost.Python on OS X
body: <p>I am trying to build a really trivial example with Boost.Python. I have installed boost and boost-python with homebrew. I am using python 3.4.3 and boost 1.59. My OS is El Capitan.</p>
  
  <p>Boost.Python was installed with python3 like this:</p>
  
  <pre><code>brew install boost-python --with-python3
  </code></pre>
  
  <p>I have 3 files:</p>
  
  <pre><code>/* greet.hpp */
  #ifndef BOOSTPYTHONHELLOWORLD_GREET_HPP
  #define BOOSTPYTHONHELLOWORLD_GREET_HPP
  
  char const* greet();
  
  #endif //BOOSTPYTHONHELLOWORLD_GREET_HPP
  
  
  
  /* greet.cpp */    
  #include "greet.hpp"
  
  char const* greet()
  {
      return "Hello world";
  }
  
  
  
  /* greet_ext.cpp */
  #include "greet.hpp"
  #include &lt;boost/python.hpp&gt;
  
  BOOST_PYTHON_MODULE(greet_ext)
  {
      using namespace boost::python;
      def("greet", greet);
  }
  </code></pre>
  
  <p>My CMakeLists.txt file looks like this:</p>
  
  <pre><code>cmake_minimum_required(VERSION 3.3)
  project(BoostPythonHelloWorld)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  set(PYTHON_LIBRARY "/usr/local/Cellar/python3/3.4.3/Frameworks/Python.framework/Versions/3.4/lib/libpython3.4m.dylib")
  set(PYTHON_INCLUDE_DIR "/usr/local/Cellar/python3/3.4.3/Frameworks/Python.framework/Versions/3.4/include/python3.4m")
  FIND_PACKAGE(PythonLibs 3.4 REQUIRED)
  FIND_PACKAGE(Boost COMPONENTS python)
  if(NOT WIN32)
      add_definitions(-DBOOST_ALL_DYN_LINK=1)
      add_definitions(-DBOOST_TEST_DYN_LINK)
  endif()
  INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
  add_library(greet SHARED greet.cpp)
  add_library(greet_ext SHARED greet_ext.cpp)
  target_link_libraries(greet_ext greet)
  target_link_libraries(greet_ext ${PYTHON_LIBRARIES})
  target_link_libraries(greet_ext ${Boost_LIBRARIES})
  set_target_properties(greet_ext PROPERTIES PREFIX "")
  </code></pre>
  
  <p>When I run CMake it finds all the correct python libraries (because I specified them manually as you can see in the file above).</p>
  
  <p>During build I get the following link error: </p>
  
  <pre><code>Scanning dependencies of target greet
  [ 25%] Building CXX object CMakeFiles/greet.dir/greet.cpp.o
  [ 50%] Linking CXX shared library libgreet.dylib
  [ 50%] Built target greet
  Scanning dependencies of target greet_ext
  [ 75%] Building CXX object CMakeFiles/greet_ext.dir/greet_ext.cpp.o
  [100%] Linking CXX shared library greet_ext.dylib
  Undefined symbols for architecture x86_64:
    "boost::python::detail::init_module(PyModuleDef&amp;, void (*)())", referenced from:
        _PyInit_greet_ext in greet_ext.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)
  make[2]: *** [greet_ext.dylib] Error 1
  make[1]: *** [CMakeFiles/greet_ext.dir/all] Error 2
  make: *** [all] Error 2
  </code></pre>
  
  <p>Anyone have any idea why this is happening? </p>
  
  <p><strong>EDIT</strong></p>
  
  <p>If I link against Python 2.7 it works, which means boost-python was built against python 2.7 instead of 3.4, even though I specified the <code>--with-python3</code> options.. </p>
  
  <p>So, the questions is, how to build boost-python against python 3.4? </p>