更改(外部项目)源时,CMake EXTERNALPROJECT_ADD不会触发构建

时间:2019-02-06 11:48:26

标签: c++ cmake

据我了解,到处寻找问题,实际上不是应该的。相反,人们建议改用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: 看起来在第二轮运行中并没有真正构建任何东西。直到重新扫描所有目标都需要花费很多时间

0 个答案:

没有答案