gpt4 book ai didi

c++ - CMake include_directories 和 add_subdirectory 之间的区别?

转载 作者:IT老高 更新时间:2023-10-28 22:05:13 89 4
gpt4 key购买 nike

我正在学习 CMake 以构建 C++ 代码,并在以下概念中苦苦挣扎。在我的根目录中,我有一些 cpp 文件和一个 CMakeLists.txt,它成功地在 gen-cpp 目录中生成了一些 Thrift 代码。我的根级 CMakeLists.txt 包含:

include_directories("路径到根目录"/gen-cpp)。 (以及相关的 Thrift 自动生成和包含。

一切编译正常,但我得到运行时动态库链接错误,因为 undefined symbol 引用了 gen-cpp 目录中定义的类。当我将目录中的文件移动到根级别时,它运行良好。我错过了什么? (我还调整了根级 cpp 目录中的 #include 以指向“path-to-root”/gen-cpp)。

这是对使用include_directory的误解,我应该使用add_subdirectory。如果是后者,gen-cpp 中的代码是否需要自己的 CMakeLists.txt?当所述目录的内容是根级别时,为什么不需要这个附加文件?

最佳答案

add_subdirectory(source_dir):用于在构建中添加子目录。 source_dir 中还有一个 CMakeLists.txt 文件。指定源目录中的这个 CMakeLists.txt 文件将由 CMake 立即处理,然后在当前输入文件中的处理继续超出此命令。

include_directories(dir):将给定目录添加到编译器用于搜索包含文件的目录中。这些目录被添加到当前 CMakeLists 文件的目录属性 INCLUDE_DIRECTORIES 中。

关于c++ - CMake include_directories 和 add_subdirectory 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761748/

89 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com