我有一个目录 main,它有以下子目录:A、B、C、D、Test。
在测试中,我有一个包含以下内容的 CMakeLists 文件:
cmake_minimum_required(VERSION 2.8)
enable_testing()
set(TEST_EXE_NAME test)
add_executable(${TEST_EXE_NAME} test.cpp)
add_test(NAME "testDatabase" COMMAND ${TEST_EXE_NAME})
target_include_directories(Test PUBLIC ./)
target_include_directories(Test A B C D)
target_link_libraries(Test A B C D)
在测试中,我有一个可执行文件,其中 #includes 来自 A、B、C 和 D 的几个头文件。
但是,在 make 之后,我收到 cmake 无法从 A、B、C 和 D 中找到这些头文件的消息。
我怎样才能让它消失?
原文由 user6683825 发布,翻译遵循 CC BY-SA 4.0 许可协议
从您的问题中,很难看出到底出了什么问题。这就是为什么我要描述我将如何解决整个问题。
在您的“目录主目录”中
必须有一个
CMakeLists.txt
才能在测试中使用 AD 的 CMake 目标。它看起来像这样:注意我们在这里调用
enable_testing()
。这将使您能够稍后直接在您的根构建目录中调用make test
。在文件夹 AD
在那里,您为 AD 创建库。例如,对于 A,您可以编写:
请注意,通过使用
target_include_directories
,您可以告诉 CMake 稍后自动包含库的目录。这将在下面有用。在文件夹测试
现在这变得很容易:
请注意,这里不需要为 AD 设置包含目录,因为 CMake 之前已经知道需要它们!