在cmake中使用add_custom_目标后,如何并行运行makefile?

在cmake中使用add_custom_目标后,如何并行运行makefile?,cmake,Cmake,我将按照教程在发布和调试模式下构建我的项目。除了我尝试使用makedebug-j4并行运行makefile之外,其他一切都可以在文件中运行。我得到的警告是make[4]:警告:jobserver不可用:使用-j1。将“+”添加到父生成规则 我希望makedebug-j4或makerelease-j4可以工作。但显然不是这样 目标调试是运行单个作业的单个目标,该作业调用cmake重新创建makefile,然后使用cmake invoke make-j4用于一次运行4个作业。但这里没有四份工作,只有

我将按照教程在发布和调试模式下构建我的项目。除了我尝试使用makedebug-j4并行运行makefile之外,其他一切都可以在文件中运行。我得到的警告是make[4]:警告:jobserver不可用:使用-j1。将“+”添加到父生成规则

我希望makedebug-j4或makerelease-j4可以工作。但显然不是这样

目标调试是运行单个作业的单个目标,该作业调用cmake重新创建makefile,然后使用cmake invoke make-j4用于一次运行4个作业。但这里没有四份工作,只有一份。警告消息来自make,它检测到子进程不再make,并且无法解释-j选项

您需要更新规则才能正常工作

COMMAND${CMAKE_COMMAND}-build${CMAKE_BINARY_DIR}-j4-target all

这将有一个make pass,在所有makefile更新后生成时生成-j4选项。请参阅cmake手册中的构建工具模式。

@mato我已将其更新为-j 4。您必须使用一个变量来代替4,并使用命令cmake-DNUM_JOBS=4 debug。或者您可以删除-j4并尝试CMAKE_BUILD_PARALLEL_LEVEL=4 CMAKE debug。这应该在运行CMAKE之前添加环境变量CMAKE\u BUILD\u PARALLEL\u LEVEL。
ADD_CUSTOM_TARGET(debug
  COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
  COMMENT "Switch CMAKE_BUILD_TYPE to Debug"
  )

ADD_CUSTOM_TARGET(release
  COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
  COMMENT "Switch CMAKE_BUILD_TYPE to Release"
  )