Pertanyaan Cara menggunakan gcov dengan Cmake


Saya mengalami kesulitan mengikuti panduan ini (yang pernah saya lihat disarankan pada posting lain) tentang masalah ini https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake

Pertama:

Salin file ini ke dalam jalur modul cmake Anda.

Bagaimana saya tahu apa jalur modul cmake saya?

Gunakan fungsi SETUP_TARGET_FOR_COVERAGE untuk membuat custom make   target

Apa artinya sebenarnya? Bagaimana aku melakukan itu? Terutama, apa yang harus saya ketik dan di mana?

Saya terpaksa mengkompilasi aplikasi dengan cmake, kalau tidak saya akan melakukannya dengan gcc.


4
2018-06-22 02:33


asal


Jawaban:


Anda mengatur jalur modul cmake dengan memanggil      set(CMAKE_MODULE_PATH <path>)

Pengaturan jalur modul cmake memberitahu cmake di mana mencari modul cmake seperti yang disertakan oleh include makro.

Sebagai contoh, langkah-langkah yang saya ambil untuk menggunakan CodeCoverage.cmake adalah:

  1. Salin CodeCoverage.cmake folder sumber saya di 'skrip / cmake'.
  2. Tambahkan hal berikut ke CMakeLists.txt saya:

    set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake)
    
    if (CMAKE_BUILD_TYPE STREQUAL "Coverage")
        include(CodeCoverage)
        setup_target_for_coverage(${PROJECT_NAME}_coverage ${TEST_TARGET} coverage)
    
        SET(CMAKE_CXX_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
        SET(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
    endif() #CMAKE_BUILD_TYPE STREQUAL "Coverage"
    
  3. Menjalankan cmake dengan -DCMAKE_BUILD_TYPE=Coverage

  4. Menjalankan make

  5. Menjalankan make <coverage_target>

Perhatikan bahwa:

  • ${TEST_TARGET} adalah variabel yang saya tetapkan dengan nama target pengujian unit saya yang saya buat sebelumnya di skrip.
  • <coverage_target> adalah string apa pun yang dihasilkan oleh ${PROJECT_NAME}_coverage.
  • Anda tidak perlu membungkus pembuatan cakupan dengan if seperti yang saya lakukan.
  • Karena saya menggunakan AppleClang, saya harus memperbaiki skrip CodeCoverage.cmake untuk mengizinkannya. Cara itu ditulis sekarang memungkinkan gcc dan clang 3.0.0 atau yang lebih baru saja.

5
2018-06-22 12:20