AUBO官方给的aubo_C++_linux_SDK是在qt下面的qmake实例工程,鉴于cmake比qmake的功能更多,将qmake工程的.pro文件改写为对应的CMakeLists.txt文件,实现SDK示例工程的cmake构建。
qmake工程的AuboInterfaceExample.pro文件如下
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += c++11
#********lib select **********************************
unix{
#32bit OS
contains(QT_ARCH, i386){
CONFIG += c++11
DEFINES += _GLIBCXX_USE_CXX11_ABI=0
INCLUDEPATH += $$PWD/dependents/robotSDK/inc
LIBS += $$PWD/dependents/protobuf/linux-x32/lib/libprotobuf.a
LIBS += $$PWD/dependents/robotController/lib-linux32/libour_alg_i5p.a
LIBS += -L$$PWD/dependents/log4cplus/linux_x32/lib -llog4cplus
LIBS += -L$$PWD/dependents/robotSDK/lib/linux_x32/ -lauborobotcontroller
LIBS += -lpthread
}
#64bit OS
contains(QT_ARCH, x86_64){
CONFIG += c++11
INCLUDEPATH += $$PWD/dependents/robotSDK/inc
LIBS += $$PWD/dependents/protobuf/linux-x64/lib/libprotobuf.a
LIBS += $$PWD/dependents/robotController/lib-linux64/libour_alg_i5p.a
LIBS += -L$$PWD/dependents/log4cplus/linux_x64/lib -llog4cplus
LIBS += -L$$PWD/dependents/libconfig/linux_x64/lib/ -lconfig
LIBS += -L$$PWD/dependents/robotSDK/lib/linux_x64/ -lauborobotcontroller
LIBS += -lpthread
}
}
#********SDK源码子工程*******************************
#include(../sdk-source/sdk.pri)
#SDK 使用示例
include(./example/example.pri)
SOURCES += main.cpp
其中的example.pri文件如下:
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
HEADERS += \
$$PWD/example_0.h \
$$PWD/example_1.h \
$$PWD/example_3.h \
$$PWD/example_4.h \
$$PWD/example_5.h \
$$PWD/example_6.h \
$$PWD/example_8.h \
$$PWD/example_9.h \
$$PWD/util.h \
$$PWD/example_toolio.h
SOURCES += \
$$PWD/example_0.cpp \
$$PWD/example_1.cpp \
$$PWD/example_3.cpp \
$$PWD/example_4.cpp \
$$PWD/example_5.cpp \
$$PWD/example_6.cpp \
$$PWD/example_8.cpp \
$$PWD/example_9.cpp \
$$PWD/util.cpp \
$$PWD/example_toolio.cpp
LIBS+=-lpthread
对应的CMakeLists.txt文件内容如下:
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目名称
project (Demo)
# 使用C++11的标准进行编译
add_definitions(-std=c++11)
# 设置可执行文件生成路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../bin)
# 生成debug版本
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# 设置包含目录
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/dependents/robotSDK/inc
${CMAKE_CURRENT_SOURCE_DIR}/example
)
# 设置链接库目录
link_directories(
${CMAKE_CURRENT_SOURCE_DIR}/dependents/protobuf/linux-x64/lib
${CMAKE_CURRENT_SOURCE_DIR}/dependents/robotController/lib-linux64
${CMAKE_CURRENT_SOURCE_DIR}/dependents/log4cplus/linux_x64/lib
${CMAKE_CURRENT_SOURCE_DIR}/dependents/libconfig/linux_x64/lib
${CMAKE_CURRENT_SOURCE_DIR}/dependents/robotSDK/lib/linux_x64
)
# 搜索当前目录下的所有.cpp文件
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/example SRC_LIST)
#find_library( # Sets the name of the path variable.
# log-lib
#
# # Specifies the name of the NDK library that
# # you want CMake to locate.
# libprotobuf.a
# libour_alg_i5p.a
# #-llog4cplus
# liblog4cplus.so
# #-lconfig
# libconfig.a
# #-lauborobotcontroller
# libauborobotcontroller.a
# pthread)
# 生成可执行文件
add_executable(demo main.cpp
example/example_0.cpp
example/example_1.cpp
example/example_3.cpp
example/example_4.cpp
example/example_5.cpp
example/example_6.cpp
example/example_8.cpp
example/example_9.cpp
example/util.cpp
example/example_toolio.cpp
)
# 链接库
target_link_libraries( # 目标库
demo
# 目标库需要链接的库
libauborobotcontroller.a
libprotobuf.a
libour_alg_i5p.a
liblog4cplus.so
libconfig.a
pthread)