将RQt插件移植到Windows [待校准@6413]
目录
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]