CMakeLists.txt 2.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
cmake_minimum_required(VERSION 3.0)

project(cpp_inference_demo CXX C)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

if(NOT DEFINED PADDLE_LIB)
  message(FATAL_ERROR "please set PADDLE_LIB with -DPADDLE_LIB=/path/paddle/lib")
endif()
if(NOT DEFINED DEMO_NAME)
  message(FATAL_ERROR "please set DEMO_NAME with -DDEMO_NAME=demo_name")
endif()

L
Luo Tao 已提交
14 15 16
option(WITH_MKL        "Compile demo with MKL/OpenBlas support, default use MKL."       ON)
option(WITH_GPU        "Compile demo with GPU/CPU, default use CPU."                    OFF)
option(WITH_STATIC_LIB "Compile demo with static/shared library, default use static."   ON)
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

if(WITH_GPU)
  set(CUDA_LIB "/usr/local/cuda/lib64/" CACHE STRING "CUDA Library")
endif()

include_directories("${PADDLE_LIB}")
include_directories("${PADDLE_LIB}/third_party/install/protobuf/include")
include_directories("${PADDLE_LIB}/third_party/install/glog/include")
include_directories("${PADDLE_LIB}/third_party/install/gflags/include")
include_directories("${PADDLE_LIB}/third_party/install/snappy/include")
include_directories("${PADDLE_LIB}/third_party/install/snappystream/include")
include_directories("${PADDLE_LIB}/third_party/install/zlib/include")

include_directories("${PADDLE_LIB}/third_party/boost")
include_directories("${PADDLE_LIB}/third_party/eigen3")

link_directories("${PADDLE_LIB}/third_party/install/snappy/lib")
link_directories("${PADDLE_LIB}/third_party/install/snappystream/lib")
link_directories("${PADDLE_LIB}/third_party/install/protobuf/lib")
link_directories("${PADDLE_LIB}/third_party/install/glog/lib")
link_directories("${PADDLE_LIB}/third_party/install/gflags/lib")
link_directories("${PADDLE_LIB}/third_party/install/zlib/lib")

add_executable(${DEMO_NAME} ${DEMO_NAME}.cc)

if(WITH_MKL)
  include_directories("${PADDLE_LIB}/third_party/install/mklml/include")
  set(MATH_LIB ${PADDLE_LIB}/third_party/install/mklml/lib/libmklml_intel.so 
               ${PADDLE_LIB}/third_party/install/mklml/lib/libiomp5.so)
  set(MKLDNN_PATH "${PADDLE_LIB}/third_party/install/mkldnn")
  if(EXISTS ${MKLDNN_PATH})
    include_directories("${MKLDNN_PATH}/include")
    set(MKLDNN_LIB ${MKLDNN_PATH}/lib/libmkldnn.so.0)
  endif()
else()
  set(MATH_LIB ${PADDLE_LIB}/third_party/install/openblas/lib/libopenblas.a)
endif()

55
# Note: libpaddle_inference_api.so/a must put before libpaddle_fluid.so/a
L
Luo Tao 已提交
56 57
if(WITH_STATIC_LIB)
  set(DEPS
58
      ${PADDLE_LIB}/paddle/fluid/inference/libpaddle_inference_api.a
59
      ${PADDLE_LIB}/paddle/fluid/inference/libpaddle_fluid.a)
L
Luo Tao 已提交
60 61
else()
  set(DEPS
62
      ${PADDLE_LIB}/paddle/fluid/inference/libpaddle_inference_api.so
63
      ${PADDLE_LIB}/paddle/fluid/inference/libpaddle_fluid.so)
L
Luo Tao 已提交
64
endif()
65 66
set(EXTERNAL_LIB "-lrt -ldl -lpthread")

L
Luo Tao 已提交
67 68
set(DEPS ${DEPS}
    ${MATH_LIB} ${MKLDNN_LIB}
69 70 71 72 73 74 75
    glog gflags protobuf snappystream snappy z
    ${EXTERNAL_LIB})
if(WITH_GPU)
  set(DEPS ${DEPS} ${CUDA_LIB}/libcudart.so)
endif()

target_link_libraries(${DEMO_NAME} ${DEPS})