您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.
将 RQt 插件移植到 Windows
RQt 移植示例
下面是 ROS 2 移植的 qt_gui_core.
下面是 ROS 2 移植的 python_qt_binding.
Windows 10 的注意事项
使用 __cplusplus
和需要 pluginlib 的代码
在某些地方,特别是在插件库的 ROS 2 移植中,使用了 __cplusplus
标志。遗憾的是,在 Windows 上,无论实际使用的是哪种 C++ 标准,Visual Studio 都无法正确设置该标记。请参见 本页 了解更多信息。
要设置它,需要添加编译选项 /Zc:__cplusplus
.
例如,在 CMake 中可以这样做
目标编译选项(${项目名称} 公众 "/Zc:__cplusplus";)
构建工件的位置(安装前)
这只是在建造 qt_gui_cpp
.在该软件包中,一个自定义命令依赖于软件包另一部分中的目标库。不过,该库在编译完成前不会安装。Windows 在 ${configuration} 目录中进行编译。例如
在 Linux 上 qt_gui_cpp.a
将在以下文件中构建:<ros2_ws>/build/qt_gui_cpp/src/qt_gui_cpp/
但在 Windows 上 qt_gui_cpp.lib
内置在 <ros2_ws>/build/qt_gui_cpp/src/qt_gui_cpp/Release 中。
在这种情况下,为实现跨平台兼容性,请使用 CMake 生成器表达式.但是,当您需要链接一个库时,请务必使用 $<TARGET_LINKER_FILE:_target>;
而不是 $<TARGET_FILE:_target>;
.后者会发现 .dll
文件,这些文件在 Windows 上无法链接。查看 此处举例.
编译器和链接器标志
一般来说,在移植到 Windows 时,许多软件包可能会使用额外的编译器标志。您可以在 微软文档.C++ 编译器称为 cl.exe
.
链接器标志参见 微软文档.链接程序名为 link.exe
.
不过,CMake 实际上在变量中提供了许多这样的选项。这 StackOverflow 页面 包含一个很好的示例,说明如何查看脚本中可用的所有 CMake 变量。