首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在包含中找不到CMake头文件

在包含中找不到CMake头文件
EN

Stack Overflow用户
提问于 2017-07-19 22:26:00
回答 1查看 1.7K关注 0票数 1

我有一个库,AprilTags,它使用cmake构建它。

我还有一个使用AprilTags的AIV项目。我希望将apriltags库保留在~/aiv/apriltags中,但是有另一个文件,front_back_camera_demo,它使用AprilTags库中的一些文件。

所以文件结构看起来就像

代码语言:javascript
复制
~/aiv/build/
     /apriltags/CMakeLists.txt
     /apriltags/AprilTags/TagDetector.h
     /apriltags/AprilTags/*.h
     /front_back_camera_demo.cpp
     /CMakeLists.txt

当我在顶级CMakeLists.txt上运行cmake时,它成功地构建了AprilTags库,但随后我得到了一个

front_back_camera_demo.cpp:72:35:致命错误:AprilTag/TagDetector.h:没有这样的文件或目录

包含AprilTag/TagDetector.h的行上出现错误

下面是两个相关的CMakeLists.txt:

最高层:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.6)

project(AIV)

add_subdirectory(apriltags)
add_executable(front_back_camera_demo front_back_camera_demo.cpp 
Serial.cpp)
target_link_libraries(front_back_camera_demo apriltags)

内部标签:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.6)
project(apriltags)

#add_definitions(-pg) #"-fopenmp)

# pull in the pods macros. See cmake/pods.cmake for documentation
set(POD_NAME apriltags)
include(cmake/pods.cmake)

file(GLOB SOURCE_FILES "src/*.cc")
include_directories(AprilTags . /opt/local/include)
add_library(apriltags ${SOURCE_FILES})

find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(apriltags ${OpenCV_LIBS}) #-pg) #-fopenmp)
pods_use_pkg_config_packages(apriltags eigen3)

if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  target_link_libraries(apriltags -L/opt/local/lib/) # MacPorts 
special treatment...
else (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  pods_use_pkg_config_packages(apriltags libv4l2)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

pods_install_libraries(apriltags)

file(GLOB header_files "AprilTags/*.h")
pods_install_headers(${header_files} DESTINATION AprilTags/)

pods_install_pkg_config_file(apriltags
    LIBS -lapriltags
    REQUIRES eigen3 opencv2
    VERSION 1.0.0)

add_subdirectory(example)

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-07-19 22:47:21

更喜欢target_*命令。

apriltags/CMakeLists.txt:

代码语言:javascript
复制
target_include_directories(apriltags
  PUBLIC
    "${CMAKE_CURRENT_SOURCE_DIR}"
  PRIVATE
    "${CMAKE_CURRENT_SOURCE_DIR}/AprilTags"
    /opt/local/include)

也就是说,使用apriltags目标的所有内容都将能够访问任何包含在".“中的内容,apriltags也可以使用”。“而且只有apriltags本身使用"AprilTags“和"/opt/local/include”目录下的内容。

如果你真的知道你在做什么,你可以通过使用生成器表达式获得更细粒度,但这在这里是不必要的,以使它工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45202048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档