2016-11-29 295 views
-2

我有一個只有頭文件的文件夾。cmake找不到頭文件

在我配置項目,我需要的PARAM項目的一些接口

src 
    CMakeList.txt 
    - config 
    - CMakeList.txt 
    - param 
    - CMakeList.txt 
    - parameter.h 

這是我配置裏面 CMakeList.txt

project(config) 
file(GLOB_RECURSE SOURCES "${config_SOURCE_DIR}/*.cpp") 

add_library(config ${SOURCES}) 

target_include_directories(config PUBLIC "${param_SOURCE_DIR}") 
target_include_directories(config PUBLIC "${Utils_SOURCE_DIR}/include") 

qt5_use_modules(config Core) 
target_link_libraries(config) 

PARAM庫CMakeList .txt是(它也需要Utils)

project(param) 
file(GLOB_RECURSE HEADERS "${param_SOURCE_DIR}/*.h") 

add_library(param INTERFACE) 

然後在我的配置項目中,我有一個類,其中包括一個接口和構建它時找不到它。找不到「parameter.h」文件。

/usr/local/bin/clang++ -DQT_CORE_LIB -DQT_NO_DEBUG -I/builds/modules/project/src/config -I~/modules/project/src/config -I/usr/include/eigen3 -I~/modules/libs/utils/include -isystem ~/devel/qt5/qtbase/include -isystem ~/devel/qt5/qtbase/include/QtCore -isystem ~/devel/qt5/qtbase/./mkspecs/linux-g++ -fPIC -std=gnu++11 -o CMakeFiles/config.dir/configuration.cpp.o -c ~/modules/project/src/config/configuration.cpp 

一個配置中的源文件不能因爲編譯:

fatal error: 'parameter.h' file not found 
#include "parameter.h" 
+1

使用'make VERBOSE = on'來查看是否包含添加的位置。你的錯誤信息有點短。 – usr1234567

+0

它不包括在內。它不在列出的文件夾列表中。我看到了Utils文件夾。 –

+0

你可以仔細檢查(使用'message')你的變量param_SOURCE_DIR和Utils_SOURCE_DIR是你期望的嗎? – usr1234567

回答

0

src/CMakeLists.txt你顯然需要

include_directories(param) 

線。或者,您可以在src/config/CMakeLists.txt中使用include_directories(../param)

include_directories()命令將指定的目錄添加到編譯器搜索路徑中,以便在當前的CMakeLists.txt和每個add_subdirectory編輯的目錄下聲明的所有目標。

+0

仍然不能與包含目錄一起使用。 –