【发布时间】:2021-08-06 13:06:34
【问题描述】:
我面临以下情况:
- 使用
cmake的现有项目 - 仅随 Makefile 提供的外部 3rdparty 库
与现有问题相比,我的情况的不同之处在于我不需要 cmake 来通过 Makefile 构建 3rdparty 库。相反,3rdparty 库提供了一个 library.mk Makefile,其中包含 LIB_SRCS 和 LIB_INCS 等变量,其中包含编译库所需的所有源文件和头文件。
我的想法是将library.mk 包含在项目的CMakeLists.txt 中,然后将$(LIB_SRCS) 和$(LIB_INCS) 添加到target_sources()。
我的问题:如何将library.mk 包含到现有的CMakeLists.txt 中以访问$(LIB_SRCS) 和$(LIB_INCS) 以将它们添加到target_sources()?我正在寻找这样的东西:
include("/path/to/library.mk") # Somehow include the library's `library.mk` to expose variables to cmake.
add_executable(my_app)
target_sources(
my_app
PRIVATE
main.c
$(LIB_SRCS) # Add 3rd-party library source files
$(LIB_INCS) # Add 3rd-party library header files
)
使用 include() 不起作用,因为 library.mk 不是 CMake 列表/文件。
【问题讨论】:
-
"我的情况与现有问题的不同之处在于,我不需要 cmake 来通过 Makefile 构建 3rdparty 库。" -- 为什么不呢?这将导致您的程序使用库 as 库,这通常是库项目所期望的模式。干净多了。