CMakeLists.txt 2.7 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_fluid.a)
L
Luo Tao 已提交
59 60
else()
  set(DEPS
61
      ${PADDLE_LIB}/paddle/fluid/inference/libpaddle_fluid.so)
L
Luo Tao 已提交
62
endif()
63 64
set(EXTERNAL_LIB "-lrt -ldl -lpthread")

L
Luo Tao 已提交
65 66
set(DEPS ${DEPS}
    ${MATH_LIB} ${MKLDNN_LIB}
67 68 69 70 71 72 73
    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})