CMakeLists.txt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. if(NOT HAVE_PYTHON)
  2. message(STATUS "Python interface is disabled or not all required dependencies found. Building without it...")
  3. return()
  4. endif()
  5. include_directories(${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR} ${Boost_INCLUDE_DIRS})
  6. file(GLOB_RECURSE python_srcs ${PROJECT_SOURCE_DIR}/python/*.cpp)
  7. add_library(pycaffe SHARED ${python_srcs})
  8. target_link_libraries(pycaffe ${Caffe_LINK} ${PYTHON_LIBRARIES} ${Boost_LIBRARIES})
  9. set_target_properties(pycaffe PROPERTIES PREFIX "" OUTPUT_NAME "_caffe")
  10. caffe_default_properties(pycaffe)
  11. if(UNIX OR APPLE)
  12. set(__linkname "${PROJECT_SOURCE_DIR}/python/caffe/_caffe.so")
  13. add_custom_command(TARGET pycaffe POST_BUILD
  14. COMMAND ln -sf $<TARGET_LINKER_FILE:pycaffe> "${__linkname}"
  15. COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_SOURCE_DIR}/python/caffe/proto
  16. COMMAND touch ${PROJECT_SOURCE_DIR}/python/caffe/proto/__init__.py
  17. COMMAND cp ${proto_gen_folder}/*.py ${PROJECT_SOURCE_DIR}/python/caffe/proto/
  18. COMMENT "Creating symlink ${__linkname} -> ${PROJECT_BINARY_DIR}/lib/_caffe${Caffe_POSTFIX}.so")
  19. endif()
  20. # ---[ Install
  21. # scripts
  22. file(GLOB python_files *.py requirements.txt)
  23. install(FILES ${python_files} DESTINATION python)
  24. # module
  25. install(DIRECTORY caffe
  26. DESTINATION python
  27. FILES_MATCHING
  28. PATTERN "*.py"
  29. PATTERN "ilsvrc_2012_mean.npy"
  30. PATTERN "test" EXCLUDE
  31. )
  32. # _caffe.so
  33. install(TARGETS pycaffe DESTINATION python/caffe)