"vscode:/vscode.git/clone" did not exist on "88ef3d5cfd893df0c0834d3cc12570bc51b3a26a"
CMakeLists.txt 2.93 KB
Newer Older
1

2
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)
3

4
set(USE_SSE4_INSTRUCTIONS ON CACHE BOOL "Use SSE4 instructions")
5

Davis King's avatar
Davis King committed
6
7
8
# Set this to disable link time optimization. The only reason for
# doing this to make the compile faster which is nice when developing
# new modules.
Davis King's avatar
Davis King committed
9
# set(PYBIND11_LTO_CXX_FLAGS "")
Davis King's avatar
Davis King committed
10

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# Avoid cmake warnings about changes in behavior of some Mac OS X path 
# variable we don't care about.
if (POLICY CMP0042)
    cmake_policy(SET CMP0042 NEW)
endif()


# To avoid dll hell, always link everything statically when compiling in
# visual studio.  This way, the resulting library won't depend on a bunch
# of other dll files and can be safely copied to someone elese's computer
# and expected to run.
if (MSVC)
    include(${CMAKE_CURRENT_LIST_DIR}/../../dlib/cmake_utils/tell_visual_studio_to_use_static_runtime.cmake)
endif()

add_subdirectory(../../dlib/external/pybind11 ./pybind11_build)
28
add_subdirectory(../../dlib ./dlib_build)
29
30
31
32
33

if (USING_OLD_VISUAL_STUDIO_COMPILER)
   message(FATAL_ERROR "You have to use a version of Visual Studio that supports C++11.  As of December 2017, the only versions that have good enough C++11 support to compile the dlib Pyhton API is a fully updated Visual Studio 2015 or a fully updated Visual Studio 2017.  Older versions of either of these compilers have bad C++11 support and will fail to compile the Python extension. ***SO UPDATE YOUR VISUAL STUDIO TO MAKE THIS ERROR GO AWAY***")
endif()

34

35
# Test for numpy
Davis King's avatar
Davis King committed
36
37
38
39
find_package(PythonInterp)
if(PYTHONINTERP_FOUND)
   execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import numpy" OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE NUMPYRC)
   if(NUMPYRC EQUAL 1)
40
      message(WARNING "Numpy not found. Functions that return numpy arrays will not work without Numpy installed!")
Davis King's avatar
Davis King committed
41
42
43
44
   else()
      message(STATUS "Found Python with installed numpy package")
   endif()
else()
45
   message(WARNING "Numpy not found. Functions that return numpy arrays will not work without Numpy installed!")
Davis King's avatar
Davis King committed
46
endif()
47

48
49
add_definitions(-DDLIB_VERSION=${DLIB_VERSION})

Davis King's avatar
Davis King committed
50
# Tell cmake to compile all these cpp files into a dlib python module.
51
52
53
set(python_srcs
   src/dlib.cpp
   src/matrix.cpp
54
   src/vector.cpp
55
   src/svm_c_trainer.cpp
56
   src/svm_rank_trainer.cpp
Davis King's avatar
Davis King committed
57
   src/decision_functions.cpp
Davis King's avatar
Davis King committed
58
59
   src/other.cpp
   src/basic.cpp
Davis King's avatar
Davis King committed
60
   src/cca.cpp
61
   src/sequence_segmenter.cpp
62
   src/svm_struct.cpp
63
   src/image.cpp
64
   src/rectangles.cpp
65
   src/object_detection.cpp
66
   src/shape_predictor.cpp
67
   src/correlation_tracker.cpp
68
   src/face_recognition.cpp
69
   src/cnn_face_detector.cpp
70
   src/global_optimization.cpp
71
   src/image_dataset_metadata.cpp
72
   src/numpy_returns.cpp
73
74
75
76
77
)

# Only add the GUI module if requested
if(NOT ${DLIB_NO_GUI_SUPPORT})
   list(APPEND python_srcs src/gui.cpp)
Davis King's avatar
Davis King committed
78
endif()
79

80
81
82
83
pybind11_add_module(dlib_python ${python_srcs})
target_link_libraries(dlib_python PRIVATE dlib::dlib)
# Set the output library name to dlib because that's what setup.py and distutils expects.
set_target_properties(dlib_python PROPERTIES OUTPUT_NAME dlib)
84