使用 makefile 包装 cmake build
Wrapping cmake build with makefile
我有一个项目,其中包含现有的基于 makefile 的构建系统,我想在其中添加现有的基于 cmake 的组件。
集成 cmake 配置步骤的最佳方法是什么?作为 $(shell ) 调用评估某个变量?在每次调用时运行配置...
如何整合建筑本身?只需 (MAKE) -C cmake-build-dir [目标]?
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 不存在时调用 CMake 配置步骤,并且 运行 make
直接构建您需要的任何内容(可能您需要根据您的需要定制调用的目标)。 CMake 生成的 Makefile 会检查生成的构建系统本身,因此会根据需要重新配置。
除了粗暴的回答之外,我还会将 .PHONY 添加到 Makefile 目标中:
.PHONY: $(CMAKE_BUILD_DIR)/Makefile
$(CMAKE_BUILD_DIR)/Makefile: $(CMAKE_SOURCE_DIR)/CMakeLists.txt
cmake -S $(<D) -B $(@D)
由于文件 Makefile 已经存在,并且它的依赖关系没有改变,所以在更改源时不会做任何事情,除非我们将 Makefile 视为总是过时的。
我有一个项目,其中包含现有的基于 makefile 的构建系统,我想在其中添加现有的基于 cmake 的组件。
集成 cmake 配置步骤的最佳方法是什么?作为 $(shell ) 调用评估某个变量?在每次调用时运行配置...
如何整合建筑本身?只需 (MAKE) -C cmake-build-dir [目标]?
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 不存在时调用 CMake 配置步骤,并且 运行 make
直接构建您需要的任何内容(可能您需要根据您的需要定制调用的目标)。 CMake 生成的 Makefile 会检查生成的构建系统本身,因此会根据需要重新配置。
除了粗暴的回答之外,我还会将 .PHONY 添加到 Makefile 目标中:
.PHONY: $(CMAKE_BUILD_DIR)/Makefile
$(CMAKE_BUILD_DIR)/Makefile: $(CMAKE_SOURCE_DIR)/CMakeLists.txt
cmake -S $(<D) -B $(@D)
由于文件 Makefile 已经存在,并且它的依赖关系没有改变,所以在更改源时不会做任何事情,除非我们将 Makefile 视为总是过时的。