gpt4 book ai didi

c++ - CMAKE:图书馆缺少头文件

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:54 28 4
gpt4 key购买 nike

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

文件夹结构类似于:

  • build
    • 图书馆
  • 来源
    • 图书馆
  • 测试
    • 图书馆测试

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

fatal error: 'file.h' file not found

我最近的尝试:

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

关于c++ - CMAKE:图书馆缺少头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787032/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com