【发布时间】:2011-08-23 17:40:05
【问题描述】:
这是我第一次尝试使用 cmake,如果可能的话,我希望收到一些关于我所做工作的反馈,因为仍然存在一些问题。
在库文件夹的 CMakeLists.txt 中,我创建了两个 makefile 目标:configure-antlr3c 和 antlr3c。第一个目标运行 autotools 配置 shell 脚本,第二个目标运行 make 可执行文件来构建库:
# CMakeLists.txt in libantlr3c-3.1.3
add_custom_target(
configure-antlr3c
${SHELL_EXECUTABLE} configure
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(
antlr3c
${MAKE}
DEPENDS configure-antlr3c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
主要问题是configure-antlr3c目标总是“过时”,所以即使没有发生任何变化,它也会一直执行。此外,我必须在单独的目录(而不是我的项目的根目录)中生成我的 cmake makefile,以避免覆盖库的 autotools Makefile...
有没有人遇到过这个问题(使用 cmake 构建 autotools 项目)?如果是这样,您的解决方案是什么?
谢谢。
编辑:解决方案 在根 CMakeLists.txt 中:
include(ExternalProject)
ExternalProject_Add(
libantlr3c
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
BUILD_COMMAND make
BUILD_IN_SOURCE 1
)
【问题讨论】:
-
您应该将您的解决方案添加到答案块中;不在问题中。
标签: build-process build-automation cmake autotools antlr3