将RQt插件移植到Windows [待校准@6413]

RQt移植示例 [待校准@6414]

这是 qt_gui_core 的ROS 2港口。 [待校准@6415]

这是 python_qt_binding 的ROS 2港口。 [待校准@6416]

Windows 10的注意事项 [待校准@6417]

TinyXML版本1的问题 [待校准@6418]

我无法成功使用TinyXML。我在需要的地方升级到TinyXML-2。这是一个非常直接的改变。 [待校准@6419]

查看 this PR ,了解移植到TinyXML-2的示例。 [待校准@6420]

使用 __cplusplus 的代码和需要pluginlib的代码 [待校准@6421]

在某些地方,特别是在pluginlib的ROS 2端口,使用了 __cplusplus 旗。不幸的是,在Windows上,无论实际使用的是cstandard标准,Visual Studio都没有正确设置此标志。详情见 this page[待校准@6422]

要设置它,您需要添加编译选项 “/Zc:__ cplusplus”。 [待校准@6423]

例如,在CMake中,您可以执行以下操作: [待校准@6424]

target_compile_options(${PROJECT_NAME} PUBLIC "/Zc:__cplusplus")

构建工件的位置 (安装前) [待校准@6425]

这只是在建造 qt_gui_cpp 时才出现的。在该包中,自定义命令依赖于包另一部分中的目标库。但是,在构建完成之前不会安装该库。Windows构建在 ${configuration} 目录中。例如: [待校准@6426]

在Linux上, qt_gui_cpp.a 将内置于: <ros2_ws>/build/qt_gui_cpp/src/qt_gui_cpp/ [待校准@6427]

但是在Windows上, qt_gui_cpp.lib 是在 <ros2_ws>/build/qt_gui_cpp/src/qt_gui_cpp/Release中构建的 [待校准@6428]

为了在这种情况下跨平台兼容,请使用 CMake generator expressions 。但是,当您需要一个库来链接时,请确保使用 “$ <目标 _ 链接 _ 文件: _ 目标> `` instead of `` $ <目标 _ 文件: _ 目标> ``. The latter will find 乙甲 files, which cannot be linked against on Windows. See an example here[待校准@6429]

编译器和链接器标志 [待校准@6430]

通常,在移植到Windows时,许多包可能会使用其他编译器标志。您可以在 Microsoft's documentation 上找到Windows编译器标志。C + + 编译器被调用 cl.exe[待校准@6431]

有关链接器标志,请参见 Microsoft's documentation 。链接器程序被调用 link.exe[待校准@6432]

然而,CMake实际上在变量中提供了许多这些选项。这个 StackOverflow page 包含了一个很好的例子,说明如何查看脚本中所有可用的CMake变量。 [待校准@6433]