关于CMakeLists自定义头文件、源文件的配置

1、自定义头文件

如果在功能包下面的include下创建了自定义的.h文件,在配置CMakeLists时需要把下面代码的注释解开;

include_directories(
include
  ${catkin_INCLUDE_DIRS}
)

2、自定义源文件

如果功能包的src下有多个cpp文件,但是想在一个节点下运行,一共有两种方法,自我感觉下面的方法1比较简单,

${PROJECT_NAME}:表示以包名生成的一个名字;${PROJECT_SOURCE_DIR}:表示该包所在的文件夹,

方法1

add_executable(${PROJECT_NAME}_node src/hello.cpp src/use_hello.cpp)

直接将src下的多个cpp文件都添加进该命令行,然后将下面代码的注释给解开即可

add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
)

如果有用到其他包里的源文件,也可以直接添加到可执行命令行,下面这行命令的意思是获取该包所在上级目录toollib的src下的源文件,打包给SRC_LIST,并按下面的命令添加到可执行文件,即可。

aux_source_directory(${PROJECT_SOURCE_DIR}/../toollib/src SRC_LIST)
add_executable(${PROJECT_NAME}_node src/hello.cpp src/use_hello.cpp 
 ${SRC_LIST}
)

方法2(仅测试有两个cpp文件)

添加c++配置文件(main函数的执行要依赖于这个文件)

add_library(head_src
  include/${PROJECT_NAME}/hello.h
  src/hello.cpp
)

head_src是自定义的,然后依次添加头文件、源文件,

然后添加可执行文件,可执行文件只添加有main函数的cpp文件,

add_executable(use_hello src/use_hello.cpp)

use_hello名字是自定义的,当然也可以用默认的,这个名字是运行时的节点名,它要与target_link_libraries里的${PROJECT_NAME}_node相对应,一个地方改了,另一个地方也要改。

然后是配置target_link_libraries,如下:use_hello是main函数的cpp文件,它的执行依赖于head_src

target_link_libraries(head_src
  ${catkin_LIBRARIES}
)
target_link_libraries(use_hello
  head_src
  ${catkin_LIBRARIES}
)

3、让一个包里src下不同的cpp文件分别生成不同的运行节点

配置CMakeLists时,在添加可执行文件行,给不同的cpp文件分别起上不同的名字,然后在target_link_libraries也分别对应上相应的名字即可。

add_executable(haha01 src/haha01.cpp  )
add_executable(hear01 src/hear01.cpp  )
add_executable(person_pub src/demo03.cpp  )
add_executable(person_sub src/demo04.cpp  )
target_link_libraries(haha01
  ${catkin_LIBRARIES}
)
target_link_libraries(hear01
  ${catkin_LIBRARIES}
)
target_link_libraries(person_pub
  ${catkin_LIBRARIES}
)
target_link_libraries(person_sub
  ${catkin_LIBRARIES}
)

以上仅供参考,欢迎交流学习。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值