2021/12/17 完成了基于Qt下ROS操作系统与MySQL的连接。
问题:由于项目工程实在ROS下搭建的,而且需要用到QT做UI界面的支撑,所以整个系统的工程文件是通过CMAKE实现的,其中环境文件是.workspace文件,所以无法像.pro文件中添加QT+=sql这句话来连接到sql模块,因此需要编辑CMakeList文件实现动态链接库的链接。
实现步骤:
1)在需要用到数据库的功能包里面编辑其下的CMakeLists.txt文件,.添加或修改以下语句:(目的是为了找到这个包,然后把包里存在的库文件赋值到QT_LIBRARIES变量里面)
find_package(Qt5 COMPONENTS Sql REQUIRED)
set(QT_LIBRARIES Qt5::Sql)
注:这里只是添加了Sql这个模块(S必须大写),如果还有其他的模块相应添加,例如如果用到Ui界面,一定会有Core、Widgets这些模块,就需要在Sql后面再加上这两个,并用空格隔开;
2)只是赋值到变量里还不行,还需要执行链接它,因此需要再拉到最后,再加上下列代码:
add_executable(xxx src/xxx.cpp)
target_link_libraries(xxx ${QT_LIBRARIES} ${xxxx})
注:这里xxx是填写自己对应的节点名称和节点里对应的main函数所存在的文件,${xxxx}表示如果还需要链接别的库文件的话相应的变量名也可以写进去,几个不同${xxxx}用空格隔开就可以。
然后再执行就OK了,对应的头文件就都可以使用了,注意是在Qt下使用MySQL,所以对应的头文件是QSqlDatabase等等,具体的可以去搜怎么在Qt里面用mysql编写程序!!!
(这里只给出的解决办法,具体的实现原理有关CMake的去搜cmake教程,有关数据库的可以去搜qt下mysql编程的教程。)