我正在学习 CMake 以构建 C++ 代码,并在以下概念中苦苦挣扎。在我的根目录中,我有一些 cpp 文件和一个 CMakeLists.txt,它成功地在 gen-cpp 目录中生成了一些节俭代码。我的根级 CMakeLists.txt 包含:
包含目录(“根路径”/gen-cpp)。(连同相关的节俭自动生成和包括。
一切编译正常,但我得到运行时动态库链接错误,因为未定义符号引用了 gen-cpp 目录中定义的类。当我将目录中的文件移动到根级别时,它运行良好。我错过了什么?(我还调整了根级 cpp 目录中的 #include 以指向“path-to-root”/gen-cpp)。
这是对使用 include_directory 的误解吗,我应该在哪里使用 add_subdirectory。如果是后者,gen-cpp 中的代码是否需要自己的 CMakeLists.txt?当所述目录的内容是根级别时,为什么不需要这个附加文件?