我有一个库项目,其层次结构如下所示:
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文件。任何可以指出我正确方向并帮助我解决这个问题的事情都非常感激。
答案 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
)