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/.dll
和include/
头文件会集中放这里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 源码。
✅ 总结:
-
Fast-DDS 编译一次 → 安装到统一路径
-
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
)