Ну, насколько я понимаю, искать проблему здесь и там, на самом деле не должно.Вместо этого люди предлагают использовать 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
создается каждый раз, когда я запускаю сборку, независимо от того, является ли цельдо даты, что, возможно, нежелательно, но задокументированное поведение .
У цели нет выходного файла, и она всегда считается устаревшей, даже если команды пытаются создать файлс именем цели.
Я менее чем доволен этим поведением, есть ли какая-либо дополнительная опция, которая может быть более подходящей для вышеупомянутого случая?
EDIT001: Взглядыкак будто на самом деле ничего не строится во втором запуске.Проходит целая вечность, пока make не отсканирует все цели