项目包含路径中的“.cpp”文件不会被项目看到

".cpp" files in project include path would not be seen by the project

假设我有一个简单的项目测试。这是 CMakeLists.txt:

project(Test)

set(CMAKE_CXX_STANDARD 11)

include_directories(path/to/somewhere)

add_executable(Test main.cpp)

现在,在包含目录中我有 A.hA.cpp。每当我编译时,我总是得到对 A.h 中声明的函数定义的未定义引用。很明显,该项目根本没有看到 A.cpp

我可以知道如何让它工作吗?鉴于我不喜欢 add_executable(Test main.cpp A.cpp) 因为我认为 A 应该是一个单独的东西而不是直接集成到可执行文件中。我唯一的选择是将 A 构建成 .so 吗?我可以以某种方式修改 cmake 以解决构建库的问题吗?

“.cpp” files in project include path would not be seen by the project

你的问题不在于项目"sees"。问题是您未能 link 使用翻译单元。

Is my only option building A into a.so?

不,您不需要构建共享库。您可以改用静态或 "object" 库。

或者您可以在 add_executable 指令中列出源文件。