C++ 更改(外部项目)源时,CMake EXTERNALPROJECT_ADD不会触发生成
嗯,就我在这里和那里寻找问题的理解,它实际上不应该。相反,人们建议使用C++ 更改(外部项目)源时,CMake EXTERNALPROJECT_ADD不会触发生成,c++,cmake,C++,Cmake,嗯,就我在这里和那里寻找问题的理解,它实际上不应该。相反,人们建议使用ADD\u CUSTOM\u TARGET。所以,我改变了这个观点: EXTERNALPROJECT_ADD(spdk SOURCE_DIR ${EXTDIR}/spdk CONFIGURE_COMMAND ./configure ${SPDK_CONFIG} BUILD_COMMAND $(MAKE) -j
ADD\u CUSTOM\u 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重新扫描所有目标只需花费很长时间