据我了解,到处寻找问题,实际上不是应该的。相反,人们建议改用ADD_CUSTOM_TARGET
。因此,我从此切换:
EXTERNALPROJECT_ADD(spdk
SOURCE_DIR ${EXTDIR}/spdk
CONFIGURE_COMMAND ./configure ${SPDK_CONFIG}
BUILD_COMMAND $(MAKE) -j CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} DPDK_CFLAGS=${DPDK_CONFIG}
INSTALL_COMMAND ""
BUILD_IN_SOURCE 1
LOG_CONFIGURE 1
LOG_BUILD 1
)
对此:
ADD_CUSTOM_TARGET(spdk-configure
COMMAND ./configure ${SPDK_CONFIG}
WORKING_DIRECTORY ${EXTDIR}/spdk
)
ADD_CUSTOM_TARGET(spdk
COMMAND $(MAKE) -j CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} DPDK_CFLAGS=${DPDK_CONFIG}
WORKING_DIRECTORY ${EXTDIR}/spdk
)
ADD_DEPENDENCIES(spdk spdk-configure)
但是,我看到spdk/spdk-configure
是在每次调用构建时构建的,无论目标是否是最新的,这都是不期望的,但documented behavior却是最新的。
目标没有输出文件,并且始终被视为过时的 即使命令尝试使用目标名称创建文件。
我对这种行为不满意,是否有其他选择可能更适合上述情况?
EDIT001: 看起来在第二轮运行中并没有真正构建任何东西。直到重新扫描所有目标都需要花费很多时间