编译项目时使用 CMake,当编译复杂时也容易出错,因此记录下以便后续参考:
项目 quic 基本情况:
quic 依赖 boringssl 的 ssl、crypto 等,因此在 quic 的 CMakeLists.txt 中添加:
add_subdirectory( relative/path/to/boringssl )
add_library(
...
$<TARGET_OBJECTS:ssl>
$<TARGET_OBJECTS:crypto>
...
)
编译时出现如下错误,
CMake Error at CMakeLists.txt:925 (add_library):
Error evaluating generator expression:
$<TARGET_OBJECTS:ssl>
Objects of target "ssl" referenced but is not an OBJECT library.
CMake Error at CMakeLists.txt:925 (add_library):
No SOURCES given to target: quic
原因在于 boringssl 的 ssl 和 crypto 的 CMakeLists.txt 中在生成 ssl 库、crypto 库时未添加关键字 OBJECT。即在它们的 CMakeLists.txt 的 add_library 中增加 OBJECT 即可,也就是:
# 原来
add_library(
ssl
...
)
# 修改后
add_library(
ssl
OBJECT
...
)