CMake编译多个目录(多个源文件)

  • WORKING FOR THE WOLF

  • 多个目录的多个cpp文件+编译opencv

    • 目录结构为CMAKE_TEST为主文件夹, sub为子文件夹 ,编译主文件夹的main.cpp
    • 包括寻找OPENCV库
    • 主文件夹的cpp通过调用sub文件夹内cpp文件的类来声明对象且执行摄像头。
    #CMAKE最低版本要求
    cmake_minimum_required(VERSION 2.8)
    
    #项目信息--一般是总目录
    project(CMAKE_TEST)
    
    #查找当前目录下的所有源文件并保存到DIR_SRCS变量里面
    aux_source_directory(. DIR_SRCS)
    
    
    #添加子目录
    add_subdirectory(sub)
    
    #****************************************************
    #寻找opencv并且输出信息
    #预定义几个变量:
    #OpenCV_FOUND--是否找到OpenCV。
    #OpenCV_INCLUDE_DIRS--OpenCV的头文件目录。
    #OpenCV_LIBRARY_DIRS--OpenCV的库文件目录。
    #OpenCV_LIBRARIES--OpenCV的所有库文件列表。
    #*******
    #添加OPENCV路径
    find_package(OpenCV  REQUIRED)
    include_directories(${Opencv_IN_CLUDE_DIRS})
    link_directories(${OpenCV_LIBRARY_DIRS})
    
    #生成可执行文件main 然后./main运行
    add_executable(main ${DIR_SRCS})
    
    #添加链接库
    target_link_libraries(main sub ${OpenCV_LIBS})
    
    • 执行步骤
    • 当前目录cmake .
    • make
    • ./test
    • 即可

单独编译opencv可以参考

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用CMake时,如果需要添加多个目录并同时编译,可以按照以下步骤进行操作。 首先,在主目录CMakeLists.txt文件中使用add_subdirectory命令来添加各个子目录。例如,假设我们有两个子目录分别为"subdir1"和"subdir2",我们可以在主目录CMakeLists.txt中添加以下代码: ``` add_subdirectory(subdir1) add_subdirectory(subdir2) ``` 然后,在各个子目录中的CMakeLists.txt文件中设置该子目录编译规则和依赖。例如,在"subdir1"的CMakeLists.txt中,我们可以使用add_library或add_executable命令来定义库或可执行文件,并指定需要编译源文件或依赖的其他库。类似地,在"subdir2"的CMakeLists.txt中也可以定义相应的规则和依赖。 最后,在主目录CMakeLists.txt中使用target_link_libraries命令来指定各个目标之间的依赖关系。例如,如果"subdir2"中的目标依赖于"subdir1"中的目标,我们可以在主目录CMakeLists.txt中添加以下代码: ``` target_link_libraries(target_in_subdir2 target_in_subdir1) ``` 这样,当我们使用CMake生成项目时,各个子目录中的CMakeLists.txt文件将被自动调用,它们的目标将会被编译,并且指定的依赖关系也会被处理。 总结起来,要在CMake中添加引用多个目录并同时编译,我们需要在主目录CMakeLists.txt文件中添加每个子目录的路径,并在各个子目录CMakeLists.txt文件中定义相应的规则和依赖关系。这样做可以使整个项目的构建更加清晰和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值