Masalah pengujian unit CMake dengan perintah dan dependensi khusus

Saya menghadapi masalah saat saya membangun perpustakaan bersama dan unit-test yang dapat dieksekusi (yang ada di sub direktori). Saya ingin menjalankan tes ini sebagai operasi POST_BUILD untuk perpustakaan bersama. Jadi saya memberi

Add_Custom_Command (TARGET ShLibName POST_BUILD COMMAND unit_test_exe)

CMake memunculkan pesan kesalahan selama proses pembuatan:

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"

Setidaknya salah satu dari target ini bukan STATIC_LIBRARY. Ketergantungan siklik hanya diperbolehkan di antara perpustakaan statis.

Jadi, bagaimana saya bisa mencapai apa yang saya coba lakukan.

Saya menggunakan CMake 2.8.1 (RC3) dengan generator VS2005.


person Surya    schedule 19.02.2010    source sumber


Jawaban (1)


Sepertinya Anda ingin menjalankan pengujian unit setiap kali perpustakaan bersama dikompilasi. Karena pengujian yang dapat dieksekusi sudah bergantung pada pustaka bersama, Anda dapat mengubah add_custom_command agar dijalankan setelah pengujian unit yang dapat dieksekusi telah dibuat. Misalnya:

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)

Mengubah salah satu sumber perpustakaan akan menyebabkan perpustakaan dikompilasi ulang. Karena executable memiliki ketergantungan pada perpustakaan, exe akan ditautkan kembali, dan akhirnya langkah pasca-pembuatan akan dijalankan kembali.

person richq    schedule 25.02.2010