मैं richq के जवाब का एक संस्करण का उपयोग करें। विभिन्न उप परियोजना में CMakeLists.txt
फ़ाइलों test/
तहत
find_package(GTest)
if (GTEST_FOUND)
enable_testing()
add_custom_target(build_and_test ${CMAKE_CTEST_COMMAND} -V)
add_subdirectory(test)
endif()
, मैं build_and_test
की निर्भरता के रूप में प्रत्येक परीक्षा निष्पादन जोड़ें: उच्च-स्तरीय CMakeLists.txt
में, मैं एक कस्टम लक्ष्य, build_and_test
जोड़ने के लिए, निर्माण और सभी परीक्षण चलाने के लिए :
include_directories(${CMAKE_SOURCE_DIR}/src/proj1)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(proj1_test proj1_test.cpp)
target_link_libraries(proj1_test ${GTEST_BOTH_LIBRARIES} pthread)
add_test(proj1_test proj1_test)
add_dependencies(build_and_test proj1_test)
इस दृष्टिकोण के साथ, मैं सिर्फ make build_and_test
बजाय make test
(या make all test
) की जरूरत है, और यह केवल परीक्षण कोड का निर्माण (और इसके निर्भरता) को लाभ मिलता है। यह एक शर्म की बात है कि मैं लक्ष्य नाम test
का उपयोग नहीं कर सकता। मेरे मामले में, यह इतना बुरा नहीं है क्योंकि मेरे पास एक शीर्ष स्तरीय स्क्रिप्ट है जो cmake
और फिर make
पर कॉल करके आउट-ऑफ-पेड़ डीबग और रिलीज (और क्रॉस-कंपाइल) बनाता है, और यह test
को build_and_test
में अनुवाद करता है।
जाहिर है, जीटीएस्ट सामान की आवश्यकता नहीं है। मैं बस Google टेस्ट का उपयोग/उपयोग करने के लिए होता हूं, और इसे सीएमके/सीटीएस्ट के साथ उपयोग करने का एक पूरा उदाहरण साझा करना चाहता था।
1: Running main() from gtest_main.cc
1: [==========] Running 1 test from 1 test case.
1: [----------] Global test environment set-up.
1: [----------] 1 test from proj1
1: [ RUN ] proj1.dummy
1: [ OK ] proj1.dummy (0 ms)
1: [----------] 1 test from proj1 (1 ms total)
1:
1: [----------] Global test environment tear-down
1: [==========] 1 test from 1 test case ran. (1 ms total)
1: [ PASSED ] 1 test.
1/2 Test #1: proj1_test ....................... Passed 0.03 sec
स्रोत
2013-02-25 05:53:52
सही उत्तर, धन्यवाद :) – claf
तो मुझे लगता है कि "परीक्षण करें" लक्ष्य अप्रयुक्त रहेगा क्योंकि ऐसा लगता है कि आपको add_custom_target कमांड में एक अलग लक्ष्य नाम चुनना है? – claf
हां। "मेक टेस्ट" और "मेक चेक" के बीच एकमात्र अंतर पहले शो "रनिंग टेस्ट ..." है और किसी भी बिल्ड निर्भरता की जांच नहीं करता है। – richq