makefile - 用 makefile 包装 cmake 构建
问题描述
我有一个现有基于 makefile 的构建系统的项目,我想在其中添加现有的基于 cmake 的组件。
集成 cmake 配置步骤的最佳方法是什么?作为评估某个变量的 $(shell ) 调用?在每次调用时运行配置...
如何整合建筑本身?只是(MAKE)-C cmake-build-dir [targets]?
解决方案
CMake 的目标是生成一个 Makefile,所以我会使用这样的东西:
CMAKE_BUILD_DIR := some_dir
CMAKE_SOURCE_DIR := some_src_dir
$(CMAKE_BUILD_DIR)/Makefile: $(CMAKE_SOURCE_DIR)/CMakeLists.txt
cmake -S $(<D) -B $(@D)
.PHONY: $(CMAKE_BUILD_DIR)/built_executable_or_library # to allow CMake's make check the build
$(CMAKE_BUILD_DIR)/built_executable_or_library: $(CMAKE_BUILD_DIR)/Makefile
$(MAKE) -C $(@D) $(@F)
当 Makefile 不存在并make
直接运行以构建您需要的任何内容时,这应该调用 CMake 配置步骤(可能您需要根据您的需要定制被调用的目标)。CMake 生成的 Makefile 会检查生成的构建系统本身,因此会根据需要对其进行重新配置。
推荐阅读
- html - 如何在 ReactJS 中迭代 HTML 内容
- php - PHP中的Base64到PDF - 获取损坏的文件
- pandas - 在同一行的数据框中对齐值
- python - 如何对具有任意嵌套的两个形状相同的列表执行逐元素算术运算(例如加、减、乘)
- opencv - WebAssembly:编译 OpenCV C++ 代码时未定义的符号 _ZN2cv12VideoCaptureC1Ev
- excel - Excel 未正确找到最后一行
- flutter - 在 Flutter 中使 GridView 中的列可点击
- python - 用日期跨多列插值
- c# - YamlDotNet - 序列化私有属性
- php - 查找 ISO8601 格式日期时间之间的天数