我正在遵循this教程,以发布和调试模式构建项目。一切正常,除非我尝试使用make debug -j4
并行运行makefile。我收到的警告是make[4]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
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"
)
我希望make debug -j4 or make release -j4
可以工作。但显然不是。
答案 0 :(得分:1)
目标debug
是运行单个作业的单个目标,该作业调用cmake
重新创建Makefile,然后使cmake
调用make
。 -j4
用于一次运行4个作业。但是,没有四项工作只是一项。警告消息来自make
,它检测到子进程不再为make
,并且无法解释-j
选项。
您需要更新规则才能正常工作。
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} -j 4 --target all
在更新所有Makefile之后进行构建时,将cmake
通过make
-j 4
选项。请参阅Build Tool Mode
手册中的cmake
。