当前位置: 首页 > news >正文

Qt开发的应用程序编译链接Fast DDS库

文章目录

  • 开发流程
    • 1. IDL 转换
    • 2. Fast-DDS 库编译
    • 3. 主程序 = Publisher
    • 4. 子程序 = Subscriber
  • 编译 & 安装 Fast-DDS
    • 直接使用官方安装包安装
    • 在项目里添加
    • 编译
      • 1. 准备依赖
      • 2. 配置编译环境(Windows)
      • 3. 编译 & 安装
      • 4. 在 Qt 项目里使用 Fast-DDS
  • 如何用到主程序(Publisher)和子程序(Subscriber)里
    • 依赖包的导入
      • Asio (standalone)
      • TinyXML2
      • foonathan_memory_vendor
    • 1. 需要打包的源码
    • 2. profile.cmake 增加构建逻辑
    • 3. 主项目 CMakeLists.txt 改造

开发流程

1. IDL 转换

见windows进程间DDS通信实现 安装FastDDS 生成C++绑定代码
✅ 用 Fast-DDS-Gen 生成 C++ 类型支持代码(publisher/subscriber 都要用同一份)。

  • 输出的代码通常包括 *.h, *.cxx,需要和主/子程序一起编译。

2. Fast-DDS 库编译

✅ 你需要把 Fast-DDS-2.14.0 源码和依赖(fastcdr、foonathan_memory、tinyxml2、asio、boost、openssl)编译成库(.lib/.dll)。

  • 不需要每个应用都单独编译 Fast-DDS,一次编译好库就行,多个程序都能用。
  • 建议把 Fast-DDS 装到一个统一的 install 路径(比如 D:/libs/FastDDS-2.14.0/install),然后主/子应用都 find_package(Fast-DDS REQUIRED)

3. 主程序 = Publisher

  • 链接 Fast-DDS 库
  • 引入 IDL 生成的 C++ 文件
  • 编写 publisher 逻辑

4. 子程序 = Subscriber

  • 同样链接 Fast-DDS 库
  • 引入相同的 IDL 生成代码
  • 编写 subscriber 逻辑

👉 换句话说:Fast-DDS 编译 → 输出库文件 → 主/子应用只需要链接这些库,而不是每个应用里再把 Fast-DDS 源码拖进去编译。


编译 & 安装 Fast-DDS

由于依赖项众多,编译困难,最后卡到boost库链接不成功选择了直接安装官方安装包后直接导入fastdds相关依赖库。

直接使用官方安装包安装

官方安装包下载
下一步
在这里插入图片描述
我接受
在这里插入图片描述
选择安装路径,下一步
在这里插入图片描述
下一步
在这里插入图片描述
下一步
在这里插入图片描述
安装
在这里插入图片描述
完成
在这里插入图片描述

在项目里添加

set FASTDDS_DIR=D:\fastddsgen-offline\setup\cmake:: CMake 配置 + 编译
"%CMAKE_PATH%\cmake.exe" -S %SOURCE_DIR% -B %BUILD_DIR% -G %CMAKE_GENERATOR% ^-DBUILD_THIRDPARTY=OFF ^-DBUILD_SHARED_LIBS=ON ^-DCMAKE_INSTALL_PREFIX=%SOURCE_DIR%build ^-DOPENCV_CMAKE_DIR=%OPENCV_CMAKE_DIR% ^-DQt5_DIR=%Qt5_DIR%^-DFASTDDS_DIR=%FASTDDS_DIR%
"%CMAKE_PATH%\cmake.exe" --build %BUILD_DIR% --config Release -- /m
set(FASTDDS_DIR ${FASTDDS_DIR} CACHE PATH "Fast DDS directory" FORCE)  find_package(fastcdr REQUIRED PATHS ${FASTDDS_DIR})
find_package(foonathan_memory REQUIRED PATHS ${FASTDDS_DIR})
find_package(fastrtps REQUIRED PATHS ${FASTDDS_DIR})
message(STATUS "FASTDDS_DIR        = ${FASTDDS_DIR}")
set_source_files_properties(backend/trajectory/trajectory_framePubSubTypes.cxxPROPERTIES SKIP_AUTOMOC ON
)set(TRAJECTORY_SRCSbackend/trajectory/trajectory_framePubSubTypes.cxxbackend/trajectory/trajectory_frame.cxx
)
add_executable(MyName${TRAJECTORY_SRCS}
)target_link_libraries(MyNamefastrtps fastcdr 
)

编译

1. 准备依赖

Fast-DDS 2.14.0 需要以下依赖(全部要能静态/动态链接):

  • fastcdr(必须)
  • foonathan_memory(必须)
  • tinyxml2(必须)
  • Asio(建议 header-only)
  • Boost(主要用 system, regex, filesystem 等模块)
  • OpenSSL(安全通信才需要)

👉 如果只是测试局域网通信,可以先不启用 OpenSSL。
👉 这些库你可以像之前做的那样,用 ExternalProject 下载/解压/编译,也可以提前手动编译好。


2. 配置编译环境(Windows)

在 Windows + Visual Studio 下:

cd D:\workspace\Fast-DDS-2.14.0
mkdir build
cd buildcmake .. ^-DCMAKE_INSTALL_PREFIX=D:/libs/FastDDS-2.14.0/install ^-DBUILD_SHARED_LIBS=ON ^-DCMAKE_BUILD_TYPE=Release ^-DCMAKE_GENERATOR_PLATFORM=x64 ^-DFASTDDS_STATIC=OFF ^-DTHIRDPARTY=ON

参数说明:

  • CMAKE_INSTALL_PREFIX → 安装路径,所有 .lib/.dllinclude/ 头文件会集中放这里
  • BUILD_SHARED_LIBS=ON → 生成 .dll/.lib,Qt 应用更适合动态库
  • FASTDDS_STATIC=OFF → 避免静态编译依赖冲突
  • THIRDPARTY=ON → 自动编译 fastcdr/foonathan_memory/tinyxml2

如果依赖你要自己准备,可以 -DTHIRDPARTY=OFF 然后手动指定路径。


3. 编译 & 安装

执行:

cmake --build . --config Release --target install

完成后,你会在 D:/libs/FastDDS-2.14.0/install 下看到:

install/├─ bin/         (dll 文件)├─ lib/         (lib 文件)└─ include/     (头文件: fastdds, fastcdr, foonathan 等)

4. 在 Qt 项目里使用 Fast-DDS

假设你的 Qt 项目是 CMake 构建:

cmake_minimum_required(VERSION 3.16)
project(MyPublisherApp LANGUAGES CXX)set(CMAKE_PREFIX_PATH "D:/libs/FastDDS-2.14.0/install")find_package(fastcdr REQUIRED)
find_package(fastdds REQUIRED)add_executable(MyPublisherAppmain.cppHelloWorldPublisher.cxx   # IDL 生成HelloWorldPubSubTypes.cxx # IDL 生成
)target_link_libraries(MyPublisherAppfastcdrfastdds
)

Qt 工程只需要把 IDL 生成的代码 + Fast-DDS 的库链接进来,不需要 Fast-DDS 源码。


✅ 总结:

  1. Fast-DDS 编译一次 → 安装到统一路径

  2. Qt 主/子应用只需要:

    • find_package(fastdds REQUIRED)
    • 链接 fastdds fastcdr
    • 包含 IDL 生成的 .cxx/.h

这样就能在 Qt 应用里直接用 Fast-DDS 通信了。


如何用到主程序(Publisher)和子程序(Subscriber)里

未成功,卡在链接boost库,可能版本问题,后续可能再尝试更新。

  • 自己维护一套第三方库(Boost / Protobuf / …)的 zip 包 + profile.cmake 自动解压构建
  • 项目用 add_subdirectory(thirdparty) 管理依赖
  • 主体工程在 src/

Fast DDS (fastrtps + fastcdr) 集成进来。

依赖包的导入

在这里插入图片描述

在官方依赖列表里,Fast-DDS 需要这些第三方库:

  • 必需

    • Fast CDR
    • Asio (standalone)
    • TinyXML2
    • foonathan_memory_vendor
  • 可选(有些功能才需要):

    • OpenSSL
    • foonathan_memory
    • SQLite3

Asio (standalone)

asio是头文件,不需要编译,官方下载链接https://think-async.com/Asio/Download.html

# ===========================
# Asio 解压处理
# ===========================
set(ASIO_VER 1.24.0)
set(ASIO_NAME asio-asio-1-24-0)   
set(ASIO_ROOT ${CMAKE_BINARY_DIR}/thirdparty/${ASIO_NAME})
set(ASIO_ZIP  ${CMAKE_CURRENT_LIST_DIR}/asio-asio-1-24-0.zip)find_program(7Z_EXECUTABLE NAMES 7z REQUIRED)# 如果没解压过,就解压
if(NOT EXISTS ${ASIO_ROOT}/include/asio.hpp)file(MAKE_DIRECTORY ${ASIO_ROOT})execute_process(COMMAND ${7Z_EXECUTABLE} x ${ASIO_ZIP} -aoa -o${ASIO_ROOT}WORKING_DIRECTORY ${ASIO_ROOT})# 如果解压后是 asio-asio-1-24-0/asio/include 结构if(EXISTS ${ASIO_ROOT}/asio-asio-1-24-0/asio/include)file(COPY ${ASIO_ROOT}/asio-asio-1-24-0/asio/include DESTINATION ${ASIO_ROOT})file(REMOVE_RECURSE ${ASIO_ROOT}/asio-asio-1-24-0)endif()
endif()message(STATUS "ASIO_ROOT = ${ASIO_ROOT}")# 设置 include 路径(标准化)
set(ASIO_INCLUDE_DIR ${ASIO_ROOT}/include CACHE PATH "Asio include dir" FORCE)
message(STATUS "ASIO_INCLUDE_DIR = ${ASIO_INCLUDE_DIR}")

TinyXML2

下载链接https://github.com/leethomason/tinyxml2/releases/tag/9.0.0
做离线构建的话,必须选和 Fast-DDS 2.14.0 能兼容的 TinyXML2 版本。
我查了一下 Fast-DDS 2.14.0 (2024.03 发布) 的依赖:

  • 它在 cmake/common/eprosima_libraries.cmake 里面用的是 find_package(TinyXML2 REQUIRED),并没有强制版本号。
  • eProsima 官方 CI 和 Conan recipe 里测试过的版本是 9.x 系列和 10.x 系列,默认推荐 9.0.0(这是 Ubuntu 20.04/22.04、Debian 11、ROS2 Humble 使用的版本)。
  • v10.x 系列 也兼容,但部分旧平台(比如还在用 gcc 7/8)会出编译问题。

结论:

  • 如果你追求 最稳妥 → 用 TinyXML2 v9.0.0
  • 如果你本地环境是 新编译器(VS2022 / gcc 11+),也可以用 v10.0.0 或 v10.1.0,Fast-DDS 2.14.0 也能过。

因为你现在在 Windows + VS2022 环境,推荐你先用 v9.0.0,这样 100% 不会有 ABI 或 API 差异问题。

# ===========================
# TinyXML2 解压处理
# ===========================
set(TINYXML2_VER 9.0.0)
set(TINYXML2_NAME tinyxml2-${TINYXML2_VER})
set(TINYXML2_ROOT ${CMAKE_BINARY_DIR}/thirdparty/${TINYXML2_NAME})
set(TINYXML2_ZIP  ${CMAKE_CURRENT_LIST_DIR}/${TINYXML2_NAME}.zip)ExternalProject_Add(${TINYXML2_NAME}DOWNLOAD_NAME       ${TINYXML2_NAME}.zipDOWNLOAD_COMMAND    ${7Z_EXECUTABLE} x ${TINYXML2_ZIP} -aoa -o${TINYXML2_ROOT}/srcPREFIX              ${TINYXML2_ROOT}CONFIGURE_COMMAND   cmake -B ${TINYXML2_ROOT}/src/${TINYXML2_NAME}-build -G "${CMAKE_GENERATOR}" -A x64 -S ${TINYXML2_ROOT}/src/${TINYXML2_NAME} ^-DCMAKE_INSTALL_PREFIX=${TINYXML2_ROOT} ^-DBUILD_SHARED_LIBS=OFFBUILD_COMMAND       cmake --build ${TINYXML2_ROOT}/src/${TINYXML2_NAME}-build -j --config ReleaseINSTALL_COMMAND     cmake --build ${TINYXML2_ROOT}/src/${TINYXML2_NAME}-build --target install --config Release
)# 安装后路径
set(TINYXML2_INCLUDE_DIR ${TINYXML2_ROOT}/include CACHE PATH "TinyXML2 include dir" FORCE)
set(TINYXML2_LIB_DIR     ${TINYXML2_ROOT}/lib     CACHE PATH "TinyXML2 lib dir" FORCE)message(STATUS "TINYXML2_ROOT = ${TINYXML2_ROOT}")

foonathan_memory_vendor

源码下载链接:Version 0.7-2https://github.com/foonathan/memory/releases/tag/v0.7-2

1. 需要打包的源码

Fast DDS 必须有两个核心库:

fastcdr:https://github.com/eProsima/Fast-CDR
Fast-DDS:https://github.com/eProsima/Fast-DDS

建议下载 release 源码 zip,放到你的 thirdparty/ 目录下,比如:

thirdparty/├─ fastcdr-1.1.0.zip└─ Fast-DDS-2.14.0.zip

2. profile.cmake 增加构建逻辑

include(ExternalProject)set(FASTDDS_INSTALL ${CMAKE_BINARY_DIR}/thirdparty/install)ExternalProject_Add(fastcdr_extPREFIX ${CMAKE_BINARY_DIR}/thirdparty/fastcdrURL ${CMAKE_SOURCE_DIR}/thirdparty/fastcdr-1.1.0.zipCMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${FASTDDS_INSTALL}-DBUILD_SHARED_LIBS=OFF-DCMAKE_POSITION_INDEPENDENT_CODE=ONUPDATE_COMMAND ""PATCH_COMMAND ""
)ExternalProject_Add(fastdds_extPREFIX ${CMAKE_BINARY_DIR}/thirdparty/fastddsURL ${CMAKE_SOURCE_DIR}/thirdparty/Fast-DDS-2.14.0.zipDEPENDS fastcdr_extCMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${FASTDDS_INSTALL}-DBUILD_SHARED_LIBS=OFF-DCMAKE_POSITION_INDEPENDENT_CODE=ON-DTHIRDPARTY_fastcdr=ON-Dfastcdr_DIR=${FASTDDS_INSTALL}/lib/cmake/fastcdrUPDATE_COMMAND ""PATCH_COMMAND ""
)# 导出 targets 给主项目使用
set(FASTDDS_CMAKE_DIR ${FASTDDS_INSTALL}/lib/cmake CACHE PATH "FastDDS cmake config" FORCE)

3. 主项目 CMakeLists.txt 改造

add_subdirectory(thirdparty) 之后,主工程里写:

find_package(fastcdr REQUIRED PATHS ${FASTDDS_CMAKE_DIR})
find_package(fastrtps REQUIRED PATHS ${FASTDDS_CMAKE_DIR})# 你的应用
add_executable(CommandDisplaySystem main.cppidl_gen/trajectory_framePubSubTypes.cxxidl_gen/trajectory_frameTypeObjectSupport.cxx
)target_include_directories(CommandDisplaySystem PRIVATE${CMAKE_CURRENT_SOURCE_DIR}/idl_gen
)target_link_libraries(CommandDisplaySystem PRIVATE fastrtps fastcdr)

这样:

  • 构建时会先自动解压 / 编译 fastcdr、Fast-DDS
  • 然后 find_package() 就能在 ${FASTDDS_INSTALL}/lib/cmake 找到对应的 CMakeConfig
  • 你的 src 代码只需要正常 #include <fastdds/...>#include "trajectory_framePubSubTypes.hpp"

记录一个完整的编译源码及依赖库的,后续看看再改

# profile_fastdds.cmake
include(ExternalProject)
# 引入独立的 Boost 构建
get_filename_component(PROJ_ROOT ${CMAKE_CURRENT_LIST_DIR}/../.. ABSOLUTE)
# 引入 Boost 构建脚本
include(${PROJ_ROOT}/thirdparty/boost_1_78_0/profile.cmake)# ===========================
# Asio 解压处理
# ===========================
set(ASIO_VER 1.24.0)
set(ASIO_NAME asio-asio-1-24-0)   
set(ASIO_ROOT ${CMAKE_BINARY_DIR}/thirdparty/${ASIO_NAME})
set(ASIO_ZIP  ${CMAKE_CURRENT_LIST_DIR}/asio-asio-1-24-0.zip)find_program(7Z_EXECUTABLE NAMES 7z REQUIRED)# 如果没解压过,就解压
if(NOT EXISTS ${ASIO_ROOT}/include/asio.hpp)file(MAKE_DIRECTORY ${ASIO_ROOT})execute_process(COMMAND ${7Z_EXECUTABLE} x ${ASIO_ZIP} -aoa -o${ASIO_ROOT}WORKING_DIRECTORY ${ASIO_ROOT})# 如果解压后是 asio-asio-1-24-0/asio/include 结构if(EXISTS ${ASIO_ROOT}/asio-asio-1-24-0/asio/include)file(COPY ${ASIO_ROOT}/asio-asio-1-24-0/asio/include DESTINATION ${ASIO_ROOT})file(REMOVE_RECURSE ${ASIO_ROOT}/asio-asio-1-24-0)endif()
endif()# message(STATUS "ASIO_ROOT = ${ASIO_ROOT}")# 设置 include 路径(标准化)
# message(STATUS "ASIO_INCLUDE_DIR = ${ASIO_INCLUDE_DIR}")# ===========================
# TinyXML2 解压处理
# ===========================
set(TINYXML2_VER 9.0.0)
set(TINYXML2_NAME tinyxml2-${TINYXML2_VER})
set(TINYXML2_ROOT ${CMAKE_BINARY_DIR}/thirdparty/${TINYXML2_NAME})
set(TINYXML2_ZIP  ${CMAKE_CURRENT_LIST_DIR}/${TINYXML2_NAME}.zip)ExternalProject_Add(${TINYXML2_NAME}DOWNLOAD_NAME       ${TINYXML2_NAME}.zipDOWNLOAD_COMMAND    ${7Z_EXECUTABLE} x ${TINYXML2_ZIP} -aoa -o${TINYXML2_ROOT}/srcPREFIX              ${TINYXML2_ROOT}CONFIGURE_COMMAND   cmake -B ${TINYXML2_ROOT}/src/${TINYXML2_NAME}-build -G "${CMAKE_GENERATOR}" -A x64 -S ${TINYXML2_ROOT}/src/${TINYXML2_NAME} ^-DCMAKE_INSTALL_PREFIX=${TINYXML2_ROOT} ^-DBUILD_SHARED_LIBS=OFFBUILD_COMMAND       cmake --build ${TINYXML2_ROOT}/src/${TINYXML2_NAME}-build -j --config ReleaseINSTALL_COMMAND     cmake --build ${TINYXML2_ROOT}/src/${TINYXML2_NAME}-build --target install --config Release
)# 安装后路径
set(TINYXML2_INCLUDE_DIR ${TINYXML2_ROOT}/include CACHE PATH "TinyXML2 include dir" FORCE)
set(TINYXML2_LIB_DIR     ${TINYXML2_ROOT}/lib     CACHE PATH "TinyXML2 lib dir" FORCE)# message(STATUS "TINYXML2_ROOT = ${TINYXML2_ROOT}")# ---------- foonathan_memory 离线头文件部署 ----------
set(FOO_VER 0.7-2)
set(FOO_NAME memory-${FOO_VER})
set(FOO_ROOT ${CMAKE_BINARY_DIR}/thirdparty/${FOO_NAME})
set(FOO_ZIP  ${CMAKE_CURRENT_LIST_DIR}/memory-${FOO_VER}.zip)# 1. 每次重新解压,保证干净
file(REMOVE_RECURSE ${FOO_ROOT})
file(MAKE_DIRECTORY ${FOO_ROOT}/src)
execute_process(COMMAND ${7Z_EXECUTABLE} x ${FOO_ZIP} -aoa -o${FOO_ROOT}/srcRESULT_VARIABLE ret)
if(NOT ret EQUAL 0)message(FATAL_ERROR "解压 ${FOO_ZIP} 失败")
endif()# 2. 头文件目录
set(FOO_SRC_DIR ${FOO_ROOT}/src/memory-${FOO_VER})# 3. 直接拷头文件
file(COPY ${FOO_SRC_DIR}/include/foonathanDESTINATION ${FOO_ROOT}/include)# 4. 生成 cmake 配置(让 find_package 能找到)
file(MAKE_DIRECTORY ${FOO_ROOT}/lib/cmake/foonathan_memory)
file(WRITE ${FOO_ROOT}/lib/cmake/foonathan_memory/foonathan_memory-config.cmake
"set(foonathan_memory_INCLUDE_DIRS \"${FOO_ROOT}/include\")set(foonathan_memory_LIBRARIES       \"\")      # 纯头件set(foonathan_memory_FOUND TRUE)")
file(WRITE ${FOO_ROOT}/lib/cmake/foonathan_memory/foonathan_memory-config-version.cmake
"set(PACKAGE_VERSION \"${FOO_VER}\")set(PACKAGE_VERSION_EXACT TRUE)set(PACKAGE_VERSION_COMPATIBLE TRUE)")# 5. 暴露给 Fast-DDS
set(foonathan_memory_DIR ${FOO_ROOT}/lib/cmake/foonathan_memory CACHE PATH "" FORCE)
message(STATUS "foonathan_memory 离线部署完成 → ${foonathan_memory_DIR}")# ----------------- Fast-CDR -----------------
# fastcdr 是 fastdds 的依赖
set(FASTCDR_VER 1.1.0)
set(FASTCDR_NAME Fast-CDR-${FASTCDR_VER})
set(FASTCDR_ROOT ${CMAKE_BINARY_DIR}/thirdparty/${FASTCDR_NAME})ExternalProject_Add(${FASTCDR_NAME}DOWNLOAD_NAME    Fast-CDR-${FASTCDR_VER}.zipDOWNLOAD_COMMAND ${7Z_EXECUTABLE} x ${CMAKE_CURRENT_LIST_DIR}/Fast-CDR-${FASTCDR_VER}.zip -aoa -o${FASTCDR_ROOT}/srcPREFIX           ${FASTCDR_ROOT}CONFIGURE_COMMAND cmake -B ${FASTCDR_ROOT}/src/${FASTCDR_NAME}-build -G "${CMAKE_GENERATOR}" -A x64-S ${FASTCDR_ROOT}/src/${FASTCDR_NAME}-DCMAKE_INSTALL_PREFIX=${FASTCDR_ROOT}-DBUILD_SHARED_LIBS=OFFBUILD_COMMAND      cmake --build ${FASTCDR_ROOT}/src/${FASTCDR_NAME}-build -j --config ReleaseINSTALL_COMMAND    cmake --build ${FASTCDR_ROOT}/src/${FASTCDR_NAME}-build --target install --config Release
)# ===========================
# Fast-DDS 配置
# ===========================
set(FASTDDS_VER 2.14.0)
set(FASTDDS_NAME Fast-DDS-${FASTDDS_VER})
set(FASTDDS_ROOT        ${CMAKE_BINARY_DIR}/thirdparty/${FASTDDS_NAME})
set(FASTDDS_LIB_DIR     ${FASTDDS_ROOT}/lib)
set(FASTDDS_INCLUDE_DIR ${FASTDDS_ROOT}/include)# ----------------- 构建 Fast-DDS -----------------
# 设置 fastcdr 的 cmake 配置路径
set(fastcdr_DIR ${FASTCDR_ROOT}/lib/cmake/fastcdr CACHE PATH "" FORCE)
set(ASIO_INCLUDE_DIR ${ASIO_ROOT}/include CACHE PATH "Asio include dir" FORCE)
message(STATUS "BOOST_ROOT → ${BOOST_ROOT}")ExternalProject_Add(${FASTDDS_NAME}DEPENDS          ${TINYXML2_NAME} ${FASTCDR_NAME}DOWNLOAD_NAME    Fast-DDS-${FASTDDS_VER}.zipDOWNLOAD_COMMAND ${7Z_EXECUTABLE} x ${CMAKE_CURRENT_LIST_DIR}/Fast-DDS-${FASTDDS_VER}.zip -aoa -o${FASTDDS_ROOT}/srcPREFIX           ${FASTDDS_ROOT}CONFIGURE_COMMAND cmake -B ${FASTDDS_ROOT}/src/${FASTDDS_NAME}-build -G "${CMAKE_GENERATOR}" -A x64-S ${FASTDDS_ROOT}/src/${FASTDDS_NAME}-DCMAKE_INSTALL_PREFIX=${FASTDDS_ROOT}-DBUILD_SHARED_LIBS=OFF-DCMAKE_BUILD_TYPE=Release-DTinyXML2_DIR=${TINYXML2_ROOT}/lib/cmake/tinyxml2-Dfoonathan_memory_DIR=${foonathan_memory_DIR}-Dfastcdr_DIR=${fastcdr_DIR}-DAsio_INCLUDE_DIR=${ASIO_INCLUDE_DIR}"-DCMAKE_CXX_FLAGS=/I${FOO_ROOT}/include /I${ASIO_INCLUDE_DIR} /I${Boost_INCLUDE_DIR}""-DCMAKE_EXE_LINKER_FLAGS=/LIBPATH:${BOOST_LIB_DIR}""-DCMAKE_SHARED_LINKER_FLAGS=/LIBPATH:${BOOST_LIB_DIR}"BUILD_COMMAND      cmake --build ${FASTDDS_ROOT}/src/${FASTDDS_NAME}-build -j --config ReleaseINSTALL_COMMAND    cmake --build ${FASTDDS_ROOT}/src/${FASTDDS_NAME}-build --target install --config Release
)
http://www.dtcms.com/a/457839.html

相关文章:

  • 网站开发人员属于旅行社手机网站建设成
  • VBA经典应用69例应用9:Preserve关键字利用,保留原值
  • WebRTC 入门与实战(三)之高级篇
  • 二:RAG 的 “语义密码”:向量、嵌入模型与 Milvus 向量数据库实操
  • 一元夺宝网站建设企业网站建设方案对比汇报
  • 《道德经》第十二章
  • 点击图片进入网站要怎么做做网站老板嫌弃太丑谁的锅
  • 如何在ubuntu20.04配置动态壁纸和bongoCat
  • 网站建设中外链与内链的技巧三视觉平面设计网
  • 小公司要不要建设网站网页打不开怎么处理
  • p2vr做的网站怎么再次打开163企业邮箱免费版
  • deepseek vs 元宝--人工智能还是人工智障?
  • 【C语言基础详细版】07. 字符串处理函数完全指南
  • 科室建设网站织梦怎么做的网站
  • 科研配色|信仰的颜色—中国红!
  • wordpress建站菜单栏 二级标题免费做问卷的网站好
  • Python print() 函数完整说明
  • 游戏攻略新闻资讯主题模板源码 YK一点资讯模版 Zblog主题模版(源码下载)
  • 计算机网络资源网站建设论文网站空间 推荐
  • 自助建站的平台wordpress 文章循环
  • Photoshop - Photoshop 工具栏(9)裁剪工具
  • 【练】C程序设计-01程序设计和C语言
  • 使用 Gunicorn 部署 FastAPI 应用程序:快速而强大的组合
  • JavaScript是web开发中一种功能强大的编程语言,
  • 网站建设策划实施要素无锡常州网络推广
  • 东莞建外贸网站龙华专业做网站公司
  • 通俗易懂的理解Vue.js
  • 【开题答辩全过程】以 爱心慈善公益网站为例,包含答辩的问题和答案
  • 【云基础】容器管理工具Containerd
  • 大数据毕业设计-基于大数据的BOSS直聘岗位招聘数据可视化分析系统(高分计算机毕业设计选题·定制开发·真正大数据·机器学习毕业设计)