我必须将cmake的品牌和品牌合并到我们的构建系统中。该构建系统应该能够同时使用make和cmake选项。问题是cmake的make导出文件不包含所有变量和设置,而这些变量和设置需要在我们的构建系统中设置为make。基本上,我们使用三个复杂的构建系统进行跨平台开发,我不喜欢在很多地方设置所有内容,因为那样很难维护该系统。 例如所有构建系统中许多编码器的makefile文件都包含常见文件,例如:
include $(PROJECT_CONF_DIR)/common/something.mk
如何通过cmake使其溶化?我不喜欢修改编码器的CMakeLists.txt(对于他们,最大为一行解决方案),我也不喜欢将cmake导出修改为make文件。 基本上,我需要在cmake命令或cmake的export(最好的)中放置一些链接,这将导致包括构建工具链期望的所有“垃圾”。 确保CMakeLists.txt可以包含许多cmake子项目和库。
例如我们的makefile构建系统包含以下内容:
directories-default:
mkdir -p $(BUILD_DIR)
mkdir -p $(OBJ_DIR)
我需要以某种方式在cmake include中实现它。
答案 0 :(得分:0)
要在配置后能够运行make directories-default
,您必须create a target。您可以创建一个目标,该目标将调用自定义命令,该命令将运行所需的shell命令。
add_custom_target(directories-default COMMAND mkdir -p "dir1" COMMAND mkdir -p "dir2")
以上语法将导致始终被视为过期的目标,即,每次您运行make directories-default
(或make all
)时,将执行命令。如果不想每次都重新运行命令,可以使用custom command:
add_custom_command(OUTPUT "dir3" "dir4" COMMAND mkdir -p "dir3" COMMAND mkdir -p "dir4")
add_custom_target(directories-default2 DEPENDS "dir3" "dir4")
此处make directories-default2
仅在您第一次运行时运行命令。您还可以使用add_custom_command
中的DEPENDS参数来创建命令的依赖链。