用makefile包装cmake版本

问题描述 投票:0回答:2

我有一个基于现有makefile的构建系统的项目,我想在其中添加基于cmake的现有组件。

集成cmake配置步骤的最佳方法是什么?作为$(shell)调用,求值一些变量?在每次调用时运行configure ...

如何整合建筑物本身?只是(MAKE)-C cmake-build-dir [targets]?

makefile cmake qnx
2个回答
1
投票

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检查生成的生成系统本身,因此将根据需要对其进行重新配置。


0
投票

除了@raspy答案之外,我还将.PHONY添加到cmake命令。

.PHONY: $(CMAKE_BUILD_DIR)/Makefile
$(CMAKE_BUILD_DIR)/Makefile: $(CMAKE_SOURCE_DIR)/CMakeLists.txt
    cmake -S $(<D) -B $(@D)

由于文件Makefile已经存在,并且其依赖关系未更改,除非我们将Makefile始终视为过期,否则更改源时将不会执行任何操作。

© www.soinside.com 2019 - 2024. All rights reserved.