2015-04-25 3 views
0

Извините за такой популярный вопрос. Но я не могу соответствующим образом применить ответы отсюда к моей среде.CMake. Создать цель покрытия

У меня есть api и тесты. Оба являются подпроектами основного проекта «фиктивный». Я застрял, потому что я использовал CMake-anitpattern:

cmake_minimum_required (VERSION 2.8) 
set(CMAKE_SKIP_RPATH FALSE) 
add_subdirectory (src) 
add_subdirectory (test) 

add_custom_target(coverage 
    COMMAND make 
    COMMAND sh ${CMAKE_SOURCE_DIR}/do_coverage.sh 
) 

Это COMMAND make плохое решение, потому что я планировал построить свой проект на Windows, позже (да, мне нужно поместить команды из ш-скрипта в CMakeLists.txt для этой цели слишком).

Итак, как я могу позволить CMake строить тест проекта в автоматическом режиме для выполнения покрытия вещей (gcov, gcovr), даже если после cmake я хочу make coverage Тотчас? Спасибо!

+0

Я надеюсь, что [этот пример] (https://github.com/gergap/helloworld) может помочь вам. – Gluttton

+0

Thanks @Gluttton Кажется, вы использовали CTest в своем проекте, но в моем случае у меня есть тестовые источники с определениями Google Test. Мой вопрос заключается в том, как построить gtest двоичный файл в автоматическом режиме, пока цель покрытия выполняется? Извините, если мне нравится с завязанными глазами человек перед вашим примером. – drewpts

ответ

0

вы можете использовать cmake построить его так:

add_custom_target(
    coverage 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} 
    COMMAND sh ${CMAKE_SOURCE_DIR}/do_coverage.sh 
) 
+0

Спасибо. Но '' 'add_dependencies (охват libproject_test)' '' исправил мою проблему. Мой беспорядок заключался в том, чтобы вместо имени подпроекта указывать имя подкаталога для этой команды. – drewpts

Смежные вопросы