CMake包括未找到的目录

时间:2017-04-01 04:06:46

标签: makefile cmake

我有一个库项目,其层次结构如下所示:

Root:
    + src/
        + apple.cpp
        + bananas/
            + bananas.cpp
        ...
    + include/
        + apple.h
        + bananas/
            + bananas.h
        ...

我一直在使用Visual Studio来编译它并且它工作正常但现在我想通过允许使用CMake编译库来使其多样化。我创建了以下CMakeLists.txt文件(位于Root中):

cmake_minimum_required(VERSION 2.8)     # Version 2.8 required 

file(GLOB_RECURSE HEADERS               # Fetch all of the Lib's Headers 
   ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h 
   ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp 
) 

file(GLOB_RECURSE SOURCES               # Fetch all of the Lib's Srcs 
   ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp 
) 

add_library(                            # Create the Library from Srcs 
    HoneycombGameEngine ${SOURCES} 
) 

target_include_directories(             # Add the Headers to the Lib
    HoneycombGameEngine 
    PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
)

它使用CMake编译并生成其文件,但是当我运行make来实际编译库时,我在bananas.cpp文件(它选择编译的第一个文件)中得到一个错误,它不能找到bananas.h头文件。如果相关,则bananas.cpp包含头语句如下所示:

#include "..\..\include\bananas\bananas.h"

我不确定我做错了什么,这是我第一次使用CMake所以我主要使用来自互联网的位和示例来编写我的CMakeLists文件。任何可以指出我正确方向并帮助我解决这个问题的事情都非常感激。

1 个答案:

答案 0 :(得分:0)

您只能在include目录中获取所有.h。 Bananas.h位于香蕉目录中。然后你必须使用类似的东西:

file(GLOB_RECURSE HEADERS               # Fetch all of the Lib's Headers 
   ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h 
   ${CMAKE_CURRENT_SOURCE_DIR}/include/bananas/*.h  
)