相信刚开始接触到CMakelist.txt的时候,肯定是摸不到头绪的;现在我就针对我在工程遇到的问题和解决方法分享给你们,希望对你们的学习有帮助。
我遇到的问题是在src文件->XXX.cpp源文件中调用,include->XXX文件->xxx.cpp里的实现函数;即多个cpp源文件的引用问题。现在:我来分享一下的解决方法:
首先,我要强调的是:去ros.wiki官网去找CMakelist的详细解析,自己从头到尾看一遍。无论这个详细报告是否对解决问题起到作用,我都建议去扣一遍各个部分的作用,这样首先对CMakelist文件有个大体的了解。详细资料查看网址:http://wiki.ros.org/catkin/CMakeLists.txt
然后,扣完一手资料后,也许你也看过许多其他的博客,关于CMakelist文件的介绍,有了大体的了解。啰嗦的话在这里不在赘述,看解决方案。要想在XXX.cpp中调用xxx.cpp文件的实现函数
第一步:要在XXX.cpp中引入头文件,eg: #include "arch/linux/net_serial.h"
第二步:修改XXX.cpp原文下的CMakelist.txt文件
(1):通过函数FILE函数,包含xxx.cpp中所有的/*.cpp文件(源文件路径须保证输入正确。
FILE(GLOB SERIAL_SRC
"include/arch/linux/*.cpp"
"include/hal/*.cpp")
(2):添加执行,通过add_execuable()函数,添加执行函数。其实就是讲FILE文件中自定义的变量 {SERIAL_SRC},添加到可执行函数中即可。如下所示
add_executable(xrobot_serial_bridge_node
src/xrobot_serial_bridge_node.cpp ${SERIAL_SRC})
最后:重新编译一下,即可调用/*.cpp文件里的实现函数了。