के साथ मेरी परियोजना के निर्माण के बाद ctest को कैसे चलाएं मैं चाहता हूं कि हर बार जब मेरी परियोजना सफलतापूर्वक बनाई गई हो तो मेरे परीक्षण लॉन्च किए जाएंगे। और अगर कुछ परीक्षण टूट जाते हैं तो मैं चाहता हूं कि मेरा निर्माण भी टूटा जाए। डिफ़ॉल्ट रूप से मुझे ctest
कमांड चलाकर मैन्युअल रूप से परीक्षण चलाने की आवश्यकता है। सीटीएस्ट वास्तव में प्रोजेक्ट का निर्माण कर सकता है लेकिन मैं आईडीई का उपयोग करता हूं जो स्रोत बनाने के लिए make
को आमंत्रित करता है। और make
परीक्षण नहीं चलाता है।cmake
मैं यह आदेश मेरी रूट CMakeLists.txt फ़ाइल में जोड़ता हूं लेकिन यह काम नहीं करता है।
add_custom_command(OUTPUT tests.txt
POST_BUILD
COMMAND ctest --output-on-failure)
सीएमके कोई भी त्रुटि नहीं लौटाता है और सब कुछ ठीक बनाता है लेकिन मेरा कस्टम कमांड नहीं चलता है। सीएमके में प्रत्येक सफल निर्माण के बाद मैं कुछ कैसे चला सकता हूं?
अद्यतन:
macro(add_unit_test target target_test)
set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${target_test} PARENT_SCOPE)
add_test(target ${CMAKE_CURRENT_BINARY_DIR}/target_test)
endmacro(add_unit_test)
यह add_test
कॉल करता है और किसी सूची में परीक्षण लक्ष्य याद करते हैं:
मेरे अंतिम समाधान इस कार्य है। इस समारोह द्वारा जोड़े गए एक परियोजना में प्रत्येक परीक्षण।
add_custom_target(all_tests ALL
DEPENDS ${UNIT_TEST_TARGETS}
)
add_custom_command(TARGET all_tests
COMMENT "Run tests"
POST_BUILD COMMAND ctest ARGS --output-on-failure
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
ऐसा नहीं है कि एक परियोजना में सभी इकाई परीक्षण पर निर्भर करता है कस्टम लक्ष्य बनाता है: जड़ CMakeLists.txt में मैं इस कोड है। all_tests
लक्ष्य के बाद कस्टम कमांड चलाया गया है।
जवाब के लिए धन्यवाद - 'add_test' में अपने मैक्रो में,, मैं तुम्हें' $ {target_test} 'के बजाय' target_test' – experquisite