如何为这种不寻常的标头结构编写我的CMakeLists.txt?

时间:2019-07-03 21:20:52

标签: c++ cmake

我正在尝试为我的C ++项目编写一个CMakeLists.txt,这取决于一些第三方库。当包含头文件时,其中一个库对我来说遵循一种不寻常的模式。

我的代码的结构为:

project/
  - CMakeLists.txt
  - src/
    - main.cpp
  - lib/
    - CMakeLists.txt
    - moduleA/
        -CMakeLists.txt
        - fooA.cpp
        - fooA.h
        - barA.cpp
        - barA.h
    - moduleB/
        - CMakeLists.txt
        - fooB.cpp
        - fooB.h

moduleA取决于moduleB,此外fooA也取决于barA。问题出在includefooA.cpp的{​​{1}}语句中:

barA.cpp

// fooA.cpp #include "moduleA/fooA.h" #include "moduleA/barA.h" ... 类似。当我在barA.cpp之后运行make时,它抱怨编译cmake时找不到moduleA/fooA.h。我不确定如何在fooA.cpp中包含文件,或者我应该在moduleA中包含这些文件。 CMakeLists.txt正确编译。我无法更改库的代码,但是可以添加moduleB文件。

我在cmake中的CMakeLists.txtlib中的CMakeLists.txt如下。

moduleA
# lib/CMakeLists.txt
cmake_minimum_required(VERSION 3.1...3.14)
project(mylibs VERSION 1.0.0 LANGUAGES CXX)
add_subdirectory(moduleA)
add_subdirectory(moduleB)

错误本质上是编译器在编译#moduleA/CMakeLists.txt cmake_minimum_required(VERSION 3.1...3.14) project(moduleA VERSION 1.0.0 LANGUAGES CXX) set (SOURCES fooA.cpp barA.cpp) set (HEADERS fooA.h barA.h) add_library(moduleA STATIC ${SOURCES} ${HEADERS}) target_link_libraries(moduleA PUBLIC moduleB) 源代码时找不到moduleA头文件,因为moduleA源文件在同一目录中的头文件中有一个异常(对我来说) moduleA

0 个答案:

没有答案