-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* fix: 完善文档,添加dotnet的文档。 * fix: 修正linux_python_build.yml重复编译的问题,以及没有指定PYTHONPATH的问题。 * fix: 修正文档错误 * feat: 添加python2的构建选项 修正旋转部分数据表示x和z反了的问题 完善文档 * 修正websocket在windows平台的问题。 * cmake require 版本3.18.2 * 修正rx,ry,rz的问题
- Loading branch information
1 parent
e62623a
commit 18bd157
Showing
11 changed files
with
1,949 additions
and
1,990 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,3 +3,4 @@ out | |
.vscode | ||
.vs | ||
sdk/include/lebai/config.hh | ||
CMakeSettings.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,187 +1,187 @@ | ||
cmake_minimum_required(VERSION 3.18) | ||
if (POLICY CMP0122) | ||
cmake_policy(SET CMP0122 NEW) | ||
endif() | ||
|
||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") | ||
|
||
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile command" TRUE) | ||
|
||
project(lebai VERSION 1.0.19 LANGUAGES CXX) | ||
set(PROJECT_NAMESPACE lebai) | ||
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}") | ||
# message(STATUS "major: ${PROJECT_VERSION_MAJOR}") | ||
# message(STATUS "minor: ${PROJECT_VERSION_MINOR}") | ||
# message(STATUS "patch: ${PROJECT_VERSION_PATCH}") | ||
|
||
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) | ||
if(isMultiConfig) | ||
if(NOT CMAKE_CONFIGURATION_TYPES) | ||
set(CMAKE_CONFIGURATION_TYPES "Release;Debug" CACHE STRING | ||
"Choose the type ofgi builds, options are: Debug Release RelWithDebInfo MinSizeRel. (default: Release;Debug)" | ||
FORCE) | ||
endif() | ||
message(STATUS "Configuration types: ${CMAKE_CONFIGURATION_TYPES}") | ||
else() | ||
if(NOT CMAKE_BUILD_TYPE) | ||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING | ||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel. (default: Release)" | ||
FORCE) | ||
endif() | ||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") | ||
endif() | ||
|
||
# Layout build dir like install dir | ||
include(GNUInstallDirs) | ||
if(UNIX) | ||
option(BUILD_SHARED_LIBS "Build shared libraries (.so or .dyld)." ON) | ||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
# for multi-config build system (e.g. Xcode, Ninja Multi-Config) | ||
foreach(OutputConfig IN LISTS CMAKE_CONFIGURATION_TYPES) | ||
string(TOUPPER ${OutputConfig} OUTPUTCONFIG) | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
endforeach() | ||
else() | ||
# Currently Only support static build for windows | ||
option(BUILD_SHARED_LIBS "Build shared libraries (.dll)." OFF) | ||
add_compile_definitions(_USE_MATH_DEFINES) | ||
add_compile_definitions(NOMINMAX) | ||
add_compile_definitions(_DEBUG) | ||
add_compile_definitions(_WEBSOCKETPP_CPP11_RANDOM_DEVICE_) | ||
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") | ||
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
# for multi-config builds (e.g. msvc) | ||
foreach(OutputConfig IN LISTS CMAKE_CONFIGURATION_TYPES) | ||
string(TOUPPER ${OutputConfig} OUTPUTCONFIG) | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
endforeach() | ||
endif() | ||
|
||
option(ENABLE_TSAN "Enable thread sanitier" OFF) | ||
if(UNIX) | ||
if(ENABLE_TSAN) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -g") | ||
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fsanitize=thread") | ||
endif() | ||
endif() | ||
|
||
# By default only the C++ library is built. | ||
option(BUILD_CXX "Build C++ library" ON) | ||
message(STATUS "Build C++ library: ${BUILD_CXX}") | ||
|
||
option(BUILD_PYTHON "Build Python Library" OFF) | ||
message(STATUS "Build Python: ${BUILD_PYTHON}") | ||
|
||
option(BUILD_PYTHON2 "Build Python2 Library" OFF) | ||
message(STATUS "Build Python2: ${BUILD_PYTHON2}") | ||
|
||
option(BUILD_DOTNET "Build .NET Library" OFF) | ||
message(STATUS "Build .Net: ${BUILD_DOTNET}") | ||
|
||
option(BUILD_JAVA "Build Java Library" OFF) | ||
message(STATUS "Build Java: ${BUILD_JAVA}") | ||
|
||
if(BUILD_PYTHON AND BUILD_PYTHON2) | ||
message(FATAL_ERROR "Can only build one of python2 and python3.") | ||
endif() | ||
|
||
if(BUILD_PYTHON) | ||
option(FETCH_PYTHON_DEPS "Install python required modules if not available" ON) | ||
message(STATUS "Python fetch dependencies: ${FETCH_PYTHON_DEPS}") | ||
if(DEFINED PYTHONPATH) | ||
message(STATUS "Python path: ${PYTHONPATH}") | ||
set(Python3_ROOT_DIR ${PYTHONPATH}) | ||
endif() | ||
endif() | ||
|
||
if(BUILD_PYTHON2) | ||
if(DEFINED PYTHONPATH) | ||
message(STATUS "Python path: ${PYTHON2PATH}") | ||
set(Python2_ROOT_DIR ${PYTHONPATH}) | ||
endif() | ||
endif() | ||
|
||
# Disable CTest targets | ||
set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) | ||
include(CTest) | ||
include(cpp) | ||
|
||
if(WIN32 AND (BUILD_DOTNET OR BUILD_JAVA OR BUILD_PYTHON)) | ||
message(STATUS "Getting SWIG: ...") | ||
include(swig) | ||
message(STATUS "Getting SWIG: ...DONE") | ||
endif() | ||
|
||
|
||
if(BUILD_PYTHON) | ||
option(FETCH_PYTHON_DEPS "Install python required modules if not available" ON) | ||
message(STATUS "Python fetch dependencies: ${FETCH_PYTHON_DEPS}") | ||
endif() | ||
include(python) | ||
|
||
include(python2) | ||
|
||
|
||
if(BUILD_DOTNET) | ||
# .Net Core 3.1 LTS is not available for osx arm64 | ||
if(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)") | ||
set(USE_DOTNET_CORE_31 OFF) | ||
else() | ||
option(USE_DOTNET_CORE_31 "Use .Net Core 3.1 LTS support" ON) | ||
endif() | ||
message(STATUS ".Net: Use .Net Core 3.1 LTS support: ${USE_DOTNET_CORE_31}") | ||
|
||
option(USE_DOTNET_6 "Use .Net 6.0 LTS support" ON) | ||
message(STATUS ".Net: Use .Net 6.0 LTS support: ${USE_DOTNET_6}") | ||
endif() | ||
include(dotnet) | ||
|
||
if(BUILD_JAVA) | ||
option(SKIP_GPG "Skip gpg sign" ON) | ||
message(STATUS "Maven skip GPG sign: ${SKIP_GPG}") | ||
endif() | ||
include(java) | ||
|
||
|
||
# add_subdirectory(tests) | ||
|
||
option(BUILD_EXAMPLES "Build examples" ON) | ||
message(STATUS "Build examples: ${BUILD_EXAMPLES}") | ||
add_subdirectory(examples) | ||
|
||
|
||
find_package(Doxygen) | ||
option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation (requires Doxygen)" ON) | ||
|
||
if(BUILD_DOCUMENTATION AND DOXYGEN_FOUND) | ||
if(NOT DOXYGEN_FOUND) | ||
message(FATAL_ERROR "Doxygen is needed to build the documentation.") | ||
endif() | ||
|
||
set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ) | ||
set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) | ||
|
||
configure_file(${doxyfile_in} ${doxyfile} @ONLY) | ||
|
||
add_custom_target(doc ALL | ||
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} | ||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||
COMMENT "Generating API documentation with Doxygen" | ||
VERBATIM) | ||
|
||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/${PROJECT_NAME}) | ||
endif() | ||
|
||
|
||
|
||
|
||
cmake_minimum_required(VERSION 3.18) | ||
if (POLICY CMP0122) | ||
cmake_policy(SET CMP0122 NEW) | ||
endif() | ||
|
||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") | ||
|
||
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile command" TRUE) | ||
|
||
project(lebai VERSION 1.0.20 LANGUAGES CXX) | ||
set(PROJECT_NAMESPACE lebai) | ||
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}") | ||
# message(STATUS "major: ${PROJECT_VERSION_MAJOR}") | ||
# message(STATUS "minor: ${PROJECT_VERSION_MINOR}") | ||
# message(STATUS "patch: ${PROJECT_VERSION_PATCH}") | ||
|
||
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) | ||
if(isMultiConfig) | ||
if(NOT CMAKE_CONFIGURATION_TYPES) | ||
set(CMAKE_CONFIGURATION_TYPES "Release;Debug" CACHE STRING | ||
"Choose the type ofgi builds, options are: Debug Release RelWithDebInfo MinSizeRel. (default: Release;Debug)" | ||
FORCE) | ||
endif() | ||
message(STATUS "Configuration types: ${CMAKE_CONFIGURATION_TYPES}") | ||
else() | ||
if(NOT CMAKE_BUILD_TYPE) | ||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING | ||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel. (default: Release)" | ||
FORCE) | ||
endif() | ||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") | ||
endif() | ||
|
||
# Layout build dir like install dir | ||
include(GNUInstallDirs) | ||
if(UNIX) | ||
option(BUILD_SHARED_LIBS "Build shared libraries (.so or .dyld)." ON) | ||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
# for multi-config build system (e.g. Xcode, Ninja Multi-Config) | ||
foreach(OutputConfig IN LISTS CMAKE_CONFIGURATION_TYPES) | ||
string(TOUPPER ${OutputConfig} OUTPUTCONFIG) | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
endforeach() | ||
else() | ||
# Currently Only support static build for windows | ||
option(BUILD_SHARED_LIBS "Build shared libraries (.dll)." OFF) | ||
add_compile_definitions(_USE_MATH_DEFINES) | ||
add_compile_definitions(_WEBSOCKETPP_CPP11_RANDOM_DEVICE_) | ||
# add_compile_definitions(NOMINMAX) | ||
# add_compile_definitions(_DEBUG) | ||
# add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") | ||
# add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) | ||
# for multi-config builds (e.g. msvc) | ||
foreach(OutputConfig IN LISTS CMAKE_CONFIGURATION_TYPES) | ||
string(TOUPPER ${OutputConfig} OUTPUTCONFIG) | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_BINDIR}) | ||
endforeach() | ||
endif() | ||
|
||
option(ENABLE_TSAN "Enable thread sanitier" OFF) | ||
if(UNIX) | ||
if(ENABLE_TSAN) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -g") | ||
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fsanitize=thread") | ||
endif() | ||
endif() | ||
|
||
# By default only the C++ library is built. | ||
option(BUILD_CXX "Build C++ library" ON) | ||
message(STATUS "Build C++ library: ${BUILD_CXX}") | ||
|
||
option(BUILD_PYTHON "Build Python Library" OFF) | ||
message(STATUS "Build Python: ${BUILD_PYTHON}") | ||
|
||
option(BUILD_PYTHON2 "Build Python2 Library" OFF) | ||
message(STATUS "Build Python2: ${BUILD_PYTHON2}") | ||
|
||
option(BUILD_DOTNET "Build .NET Library" OFF) | ||
message(STATUS "Build .Net: ${BUILD_DOTNET}") | ||
|
||
option(BUILD_JAVA "Build Java Library" OFF) | ||
message(STATUS "Build Java: ${BUILD_JAVA}") | ||
|
||
if(BUILD_PYTHON AND BUILD_PYTHON2) | ||
message(FATAL_ERROR "Can only build one of python2 and python3.") | ||
endif() | ||
if(UNIX) | ||
if(BUILD_PYTHON) | ||
option(FETCH_PYTHON_DEPS "Install python required modules if not available" ON) | ||
message(STATUS "Python fetch dependencies: ${FETCH_PYTHON_DEPS}") | ||
if(DEFINED PYTHONPATH) | ||
message(STATUS "Python path: ${PYTHONPATH}") | ||
set(Python3_ROOT_DIR ${PYTHONPATH}) | ||
endif() | ||
include(python) | ||
endif() | ||
|
||
if(BUILD_PYTHON2) | ||
if(DEFINED PYTHONPATH) | ||
message(STATUS "Python path: ${PYTHON2PATH}") | ||
set(Python2_ROOT_DIR ${PYTHONPATH}) | ||
endif() | ||
include(python2) | ||
|
||
endif() | ||
endif() | ||
# Disable CTest targets | ||
set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) | ||
include(CTest) | ||
include(cpp) | ||
|
||
if(WIN32 AND (BUILD_DOTNET OR BUILD_JAVA OR BUILD_PYTHON)) | ||
message(STATUS "Getting SWIG: ...") | ||
include(swig) | ||
message(STATUS "Getting SWIG: ...DONE") | ||
endif() | ||
|
||
|
||
if(BUILD_PYTHON) | ||
option(FETCH_PYTHON_DEPS "Install python required modules if not available" ON) | ||
message(STATUS "Python fetch dependencies: ${FETCH_PYTHON_DEPS}") | ||
endif() | ||
|
||
|
||
if(BUILD_DOTNET) | ||
# .Net Core 3.1 LTS is not available for osx arm64 | ||
if(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)") | ||
set(USE_DOTNET_CORE_31 OFF) | ||
else() | ||
option(USE_DOTNET_CORE_31 "Use .Net Core 3.1 LTS support" ON) | ||
endif() | ||
message(STATUS ".Net: Use .Net Core 3.1 LTS support: ${USE_DOTNET_CORE_31}") | ||
|
||
option(USE_DOTNET_6 "Use .Net 6.0 LTS support" ON) | ||
message(STATUS ".Net: Use .Net 6.0 LTS support: ${USE_DOTNET_6}") | ||
endif() | ||
include(dotnet) | ||
|
||
if(BUILD_JAVA) | ||
option(SKIP_GPG "Skip gpg sign" ON) | ||
message(STATUS "Maven skip GPG sign: ${SKIP_GPG}") | ||
endif() | ||
include(java) | ||
|
||
|
||
# add_subdirectory(tests) | ||
|
||
option(BUILD_EXAMPLES "Build examples" ON) | ||
message(STATUS "Build examples: ${BUILD_EXAMPLES}") | ||
add_subdirectory(examples) | ||
|
||
|
||
find_package(Doxygen) | ||
option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation (requires Doxygen)" ON) | ||
|
||
if(BUILD_DOCUMENTATION AND DOXYGEN_FOUND) | ||
if(NOT DOXYGEN_FOUND) | ||
message(FATAL_ERROR "Doxygen is needed to build the documentation.") | ||
endif() | ||
|
||
set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ) | ||
set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) | ||
|
||
configure_file(${doxyfile_in} ${doxyfile} @ONLY) | ||
|
||
add_custom_target(doc ALL | ||
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} | ||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||
COMMENT "Generating API documentation with Doxygen" | ||
VERBATIM) | ||
|
||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/${PROJECT_NAME}) | ||
endif() | ||
|
||
|
||
|
||
|
Oops, something went wrong.