使用CMake构建外部项目时,jobserver不可用

时间:2015-10-16 13:08:42

标签: c++ cmake makefile

我尝试使用ExternalProject_add在Linux上使用CMake构建一些外部项目。但是,他们不尊重make -j12命令,并发出警告:

‘warning: jobserver unavailable: using -j1. Add `+' to parent make rule.’

这会让我的构建变得痛苦。有没有办法并行构建外部项目?这是一个示例项目:

include(ExternalProject)
    ExternalProject_Add(
        ${TARGET_NAME}-ext
        URL ${CMAKE_CURRENT_SOURCE_DIR}/xerces-c-${VERSION_XERCESC}.tar.gz
        DOWNLOAD_DIR ${XERCESC_DIR}
        SOURCE_DIR ${XERCESC_DIR}/src
        PATCH_COMMAND chmod guo+rw ${CMAKE_CURRENT_SOURCE_DIR} -R
        CONFIGURE_COMMAND ./configure --prefix=${XERCESC_DIR} --disable-shared -q --disable-network --enable-transcoder-gnuiconv --enable-msgloader-inmemory
        BUILD_COMMAND make --silent
        INSTALL_COMMAND make install
        BUILD_IN_SOURCE 1
    )

1 个答案:

答案 0 :(得分:10)

为了让make命令正确地传播给他们的孩子,你需要使用$(MAKE)括号(而不是大括号)而不是make作为你的命令,即

BUILD_COMMAND $(MAKE) --silent
INSTALL_COMMAND $(MAKE) install

从CMake版本2.8.4开始支持此功能。