【发布时间】:2021-05-10 18:41:21
【问题描述】:
为了让我的 .cpp 和 .h 文件稍微整理一下,等待他们的职责,我决定将它们放入单独的文件夹中 我使用了以下结构:
根
|
-CMakeLists.txt [rootCmakeList]
src
|
-main.cpp
.......|
....... 数学
.......|
.......-CMakeLists.txt[mathCmakeList]
.......-代数.h
.......-代数.cpp
.......XML[xmlCmakeList]
.......|
.......-CMakeLists.txt
.......-AwesomeXML.h
.......-AwesomeXML.cpp
[rootCmakeList] 看起来:
cmake_minimum_required(VERSION 3.11.3)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS_DEBUG "-g")
project(myProject)
#add exectuable
add_executable(myProject src/main.cpp)
target_include_directories(myProject PUBLIC "${src/XML}")
target_include_directories(myProject PUBLIC "${src/math}")
add_subdirectory(src/XML)
add_subdirectory(src/math)
target_link_libraries(myProject xml)#needed?
target_link_libraries(myProject math)#needed?
[mathCmakeList] 看起来:
include_directories(${myProject}src/math)
add_library(math Algebra.cpp)
[xmlCmakeList] 看起来:
include_directories(${myProject}src/xml)
add_library(xml AwesomeXML.cpp)
到目前为止一切顺利,没有问题。但是如果我想#include Algebra.h 到 AweseomeXML.cpp 我找不到文件。
说实话,我什至不确定 cmake 命令 add_library 和 target_link_libraries 在这里是否真的有意义,因为我不想创建自己的库只是想整理一下我关于他们主题的文件。
【问题讨论】:
-
变量 dereference
"${src/XML}"没有意义。可能,您想要"src/XML"。"${src/math}"也是如此。 -
@Tsyvarev 你确定吗?这似乎并没有改变任何东西。除了现在在 main.cpp 中找不到这些文件。
-
我确定
"${src/XML}"是错误的。我确信${myProject}也是错误的。 “老实说,我什至不确定 cmake 命令add_library和target_link_libraries在这里是否真的有意义,因为我不想创建自己的库” - 如果您不想要库,那么为什么要创建它们?只需将所有源文件添加到add_executable调用中。
标签: c++ linux cmake include-path cmake-language