库看不到自己的标头
library can't see its own headers
FindFoo.cmake:
# Foo_FOUND - system has Foo
# Foo_INCLUDE_DIRS - the Foo include directories
# Foo_LIBRARIES - link these to use Foo
# Foo_VERSION
# Foo_DEFINITIONS - compiler switches required for using Foo
find_package(PkgConfig)
pkg_check_modules(PC_Foo QUIET Foo)
find_path(Foo_INCLUDE_DIR Foo/Foo.h
PATHS ${PC_Foo_INCLUDEDIR} ${PC_Foo_INCLUDE_DIRS}
)
find_library(Foo_LIBRARY Foo
PATHS ${PC_Foo_LIBDIR} ${PC_Foo_LIBRARY_DIRS}
)
set(Foo_VERSION ${PC_Foo_VERSION})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Foo
FOUND_VAR Foo_FOUND
REQUIRED_VARS
Foo_LIBRARY
Foo_INCLUDE_DIR
VERSION_VAR Foo_VERSION
)
if(Foo_FOUND)
set(Foo_LIBRARIES ${Foo_LIBRARY})
set(Foo_INCLUDE_DIRS ${Foo_INCLUDE_DIR})
set(Foo_DEFINITIONS ${PC_Foo_CFLAGS_OTHER})
endif()
mark_as_advanced(
Foo_INCLUDE_DIR
Foo_LIBRARY
)
CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
PROJECT(sandbox)
set(CMAKE_AUTOMOC ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
FIND_PACKAGE(Qt5Core REQUIRED)
find_package(Foo REQUIRED)
include_directories(${Foo_INCLUDE_DIRS})
SET(sandbox_SOURCES main.cpp)
ADD_EXECUTABLE(sandbox ${sandbox_SOURCES})
QT5_USE_MODULES(sandbox Core)
TARGET_LINK_LIBRARIES(sandbox ${Foo_LIBRARIES})
#include <Bar1.h>
在我的程序中工作,而#include <Foo/Bar1.h>
则不能。 真正的问题是我无法构建我的程序,因为 Bar1.h 包含#include <Foo/Bar2.h>
和:
。Foo/Bar1.h:致命错误:Foo/Bar2.h:没有这样的文件或目录 编译终止。
CMake 3.5.1
看起来问题是CMake缓存。 我从CMakeFiles目录中删除了所有内容,然后CMake无法配置该项目:
找不到 Foo(缺少:Foo_INCLUDE_DIR)
我不得不将PATH_SUFFIXES
添加到 find_path(),所有的问题都消失了。
相关文章:
- 为什么我的 FreeRTOS 任务看不到类成员?
- OpenMP 任务看不到共享变量的更改
- handleMessage看不到我的类和函数
- 模板类看不到继承的模板成员
- 为什么即使链接器找到目标文件,我的程序也看不到函数定义?
- 将 somedialog.h 包含在项目的其他部分中会使编译器看不到 ui_somedialog.h
- C++概念看到我的类型的函数,但看不到 std::vector 的函数
- unique_ptr看不到派生类的自定义构造函数
- QML可以看到我的Q_GADGET,但看不到Q_OBJECT
- 看不到我在 c++ 中传递给另一个函数的主函数中的值
- 为什么命名空间中的函数看不到全局定义的运算符<<?
- 我需要创建一个函数在用户下打印"=",但由于变量是使用 main() 声明的,因此函数看不到参数
- 具有Boost C 的多播接收器看不到数据
- 为什么我看不到被捕获的图像
- 为什么编译器在某些情况下看不到模板类中的错误?
- 库看不到自己的标头
- Linux 中的 Cout 和 Cin - 看不到控制台
- 编译时错误,看不到代码中的明显错误
- MSVC 2003 看不到嵌套包含文件中的任何定义
- C++链接器错误 - 看不到为什么它没有链接?(包括完整的代码示例)