CMakeLists.txt 2.8 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 62 63 64 65
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()
  set(DEPS
      ${PADDLE_LIB}/paddle/fluid/inference/libpaddle_fluid.so
      ${PADDLE_LIB}/contrib/inference/libpaddle_inference_api.so)
endif()
66 67
set(EXTERNAL_LIB "-lrt -ldl -lpthread")

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