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()

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

L
Luo Tao 已提交
69 70
set(DEPS ${DEPS}
    ${MATH_LIB} ${MKLDNN_LIB}
71 72 73 74 75 76 77
    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})