代码之家  ›  专栏  ›  技术社区  ›  Kumar Roshan Mehta

如何在简单CMake项目中添加include\u目录

  •  0
  • Kumar Roshan Mehta  · 技术社区  · 6 年前

    ├── build
    ├── CMakeLists.txt
    ├── src
    │   ├── CMakeLists.txt
    │   ├── headers
    │   │   └── utility.h
    │   └── main.cpp
    └── tests
        ├── CMakeLists.txt
        ├── testfeature_a
        │   ├── CMakeLists.txt
        │   └── test_me.cpp
        └── test_main.cpp
    

    在test_me.cpp中,我想包括utility.h,因为我想测试在那里定义的函数。所以我做了 #包括“headers/utility.h” 在testfeature\u a CMakeLists.txt中,我做了以下操作:

    file(GLOB SRCS *.cpp)
    ADD_EXECUTABLE(testfeature_a ${SRCS})
    include_directories(src/headers)
    TARGET_LINK_LIBRARIES(
        testfeature_a
        libgtest
        libgmock
    )
    add_test(NAME testfeature_a
    
         COMMAND testfeature_a)
    

    致命错误:headers/utility.h:没有这样的文件或目录。 如何在test\u me.cpp中包含headers目录

    1 回复  |  直到 6 年前
        1
  •  0
  •   jparimaa    6 年前

    include_directories()

    1. include_directories(../src/headers)

    2. #include "headers/utility.h" 当您已经在中指定它时 include_directories(src/headers) . 任意使用 #include "utility.h" 在cpp文件中或 include_directories(src)

    另一个选项是,您根本不需要在CMakeLists.txt中指定headers文件夹。你可以简单地使用 #include "path/to/your/file.h

    message -功能,例如。 message(${your_path}) ,所以它在执行时会打印出来,您可以检查它是否正确。

    此外,还可以使用CMake内置变量,例如 CMAKE_CURRENT_SOURCE_DIR CMAKE_SOURCE_DIR ,例如。 include_directories(${CMAKE_SOURCE_DIR}/src/headers)