Проблема модульного теста CMake с пользовательской командой и зависимостями - PullRequest
1 голос
/ 19 февраля 2010

У меня проблема с созданием разделяемой библиотеки и исполняемого файла модульного теста (который находится в подкаталоге) Я хочу выполнить этот тест как операцию POST_BUILD для разделяемой библиотеки. Итак, я дал

Add_Custom_Command (TARGET ShLibName POST_BUILD COMMAND unit_test_exe)

CMake выдает сообщение об ошибке во время процесса генерации:

CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
"libCUEUtilities" of type SHARED_LIBRARY depends on "UtilitiesUnitTest" 
"UtilitiesUnitTest" of type EXECUTABLE depends on "libCUEUtilities"

По крайней мере, одна из этих целей не является STATIC_LIBRARY. Циклические зависимости разрешены только среди статических библиотек.

Итак, как мне добиться того, что я пытаюсь сделать?

Я использую CMake 2.8.1 (RC3) с генератором VS2005.

1 Ответ

3 голосов
/ 25 февраля 2010

Звучит так, будто вы хотите запускать модульный тест каждый раз, когда разделяемая библиотека компилируется. Поскольку исполняемый файл теста уже зависит от разделяемой библиотеки, вы можете изменить add_custom_command на запуск после сборки исполняемого модуля. Например:

add_library(CUEUtilities SHARED ${CUEUTILS_LIBRARY_SOURCES})
add_executable(unit_test_exe ${UNIT_TEST_EXE_SOURCES})
target_link_libraries(unit_test_exe CUEUtilities)
add_custom_command(TARGET unit_test_exe POST_BUILD 
                   COMMAND ${CMAKE_CURRENT_BINARY_DIR}/unit_test_exe)

Изменение любого из источников библиотеки приведет к перекомпиляции библиотеки. Поскольку исполняемый файл зависит от библиотеки, исполняемый файл будет повторно связан, и, наконец, шаг после сборки будет выполнен снова.

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