【发布时间】:2017-01-22 03:32:14
【问题描述】:
我有一个子目录,它创建了一个共享库,该库构建到我的根项目的文件夹中。我将它链接到我的 cmake 文件中没有任何问题。但是,无论我怎么重新配置,编译器都找不到头文件。
文件夹结构类似于:
根
- 构建
- 库
- 源
- 图书馆
- 测试
- 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)
【问题讨论】:
-
哪个项目导致错误:一个用于library,还是一个用于test?将此信息添加到问题中。
-
CMake include path的可能重复
-
你解决了吗?
-
@Rexcirus 不,我无法弄清楚。
-
您应该改用 target_include_directories。
标签: c++ linker cmake header-files