项目包含路径中的“.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.h
和 A.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 指令中列出源文件。
假设我有一个简单的项目测试。这是 CMakeLists.txt:
project(Test)
set(CMAKE_CXX_STANDARD 11)
include_directories(path/to/somewhere)
add_executable(Test main.cpp)
现在,在包含目录中我有 A.h
和 A.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 指令中列出源文件。