CMake EXTERNALPROJECT_ADD не запускает сборку при изменении источника (внешнего проекта) - PullRequest
0 голосов
/ 06 февраля 2019

Ну, насколько я понимаю, искать проблему здесь и там, на самом деле не должно.Вместо этого люди предлагают использовать 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 не отсканирует все цели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...