CMAKE:库缺少头文件

CMAKE: Library Missing Header File

本文关键字:文件 CMAKE      更新时间:2023-10-16

我有一个子目录,用于创建一个共享库,该库构建到我的根项目的文件夹中。我把它链接到我的cmake文件中,没有任何问题。然而,无论我如何重新配置,编译器都找不到头文件

文件夹结构类似于:

  • 构建
    • lib
  • src
  • 试验
    • library_test

本质上,我想将编译的库链接到lib文件夹,以链接到它的测试。然而,无论我如何配置CMakelists,它在编译过程中都找不到库的头文件。但是,cmake过程中没有任何错误。实际错误消息如下所示:

致命错误:找不到"file.h"文件

我最近的帖子尝试:

find_library(LESSIONS_LIBS chp_two PATHS {CMAKE_SOURCE_DIR}/build/lib/)
add_library(test_chptwo SHARED ${TEST})
target_link_libraries(test_chptwo gtest LESSIONS_LIBS)

有什么想法吗?


编辑一个

以下是我更新的CMakelists:

图书馆CMakeLists:

cmake_minimum_required(VERSION 3.7.0)
#Project Name
project (chp_two)
#Build Problem Sets as Library
#Header Files 
include_directories(include ${CMAKE_CURRENT_SOURCE_DIR}/inc/)
#Source files
set(LIB random_queue.cpp ${include})
add_library(chp_two SHARED ${LIB})

测试CMakeLists:

cmake_minimum_required(VERSION 3.7.0)
#Project Name
project(TESTING)
#Setting Test sources
set(TEST test_random_queue.cpp)
#Search for libraries
find_library(LESSIONS_LIBS chp_two PATHS {CMAKE_SOURCE_DIR}/build/lib/)
enable_testing()
#turn test into a library
add_library(test_chptwo SHARED ${TEST})
target_link_libraries(test_chptwo gtest LESSIONS_LIBS) 

如果没有cmake文件,很难确定。但是,您会错过include_directories调用吗?此调用将设置要编译的.h文件的路径。

include_directories (path_to_my_headers)

以下是我在评论中所指内容的CMAKE示例。无论如何,相同的概念或多或少适用于两个libs/exe。

cmake_minimum_required(VERSION 3.7.0)
# 
project (MyProj)
#
include_directories (.)
include_directories (path_to_a_dir_with_files_I_need)
include_directories (path_to_another_dir_with_files_I_need)
#
file (GLOB HEADERS *.h)
file (GLOB SOURCES *.cpp)
# Finish with your CXX flags, add_executable, target_link_libraries, install, etc