मैं एक बहुत ही इसी तरह की समस्या है, लेकिन यहां प्रस्तुत समाधान वास्तव में संतोषजनक नहीं है। मूल पोस्टर की तरह, मैं boost :: test के आधार पर यूनिट परीक्षण चलाने के लिए चाहता हूं।
मेरे पास हमारे उत्पाद के प्रत्येक मेयर घटक के लिए एक से अधिक परीक्षण परियोजनाएं हैं। प्रत्येक परीक्षण से पहले इंस्टॉल लक्ष्य को चलाने के लिए मुख्य घटक से संबंधित परीक्षण चलाने के लिए पूरी चीज को फिर से सम्मिलित करना है। यही वह है जिसे मैं टालना चाहता हूं।
यदि मैं मूल घटक में कुछ बदलता हूं, तो मैं उस मूल घटक और संबंधित परीक्षणों को संकलित करना चाहता हूं। और फिर परीक्षण चलाएं। जब परीक्षण सफल होते हैं, तो तभी मैं संकलित करना चाहता हूं और अंततः इसे बाकी स्थापित करना चाहता हूं। https://github.com/rpavlik/cmake-modules
इस के साथ
, मैं आवश्यक DLLs के सभी निर्देशिकाओं को निर्दिष्ट कर सकते हैं और पथ वातावरण चर के लिए निर्धारित है:
डीबगर में परीक्षण चलाने के लिए, मैं कुछ बहुत ही उपयोगी cmake स्क्रिप्ट नहीं मिली नई प्रक्रिया:
# for debugging
INCLUDE(CreateLaunchers)
create_target_launcher(PLCoreTests
ARGS "--run-test=Core1"
RUNTIME_LIBRARY_DIRS ${PL_RUNTIME_DIRS_DEBUG} ${PROJECT_BINARY_DIR}/bin/Debug
WORKING_DIRECTORY ${PL_MAIN_DIR}/App/PL/bin
)
कहाँ $ {PL_RUNTIME_DIRS_DEBUG} निर्देशिका जहां बढ़ावा से DLLs और अन्य सभी पुस्तकालयों पाया जा सकता है शामिल हैं।
अब मैं मैं ADD_CUSTOM_COMMAND साथ कुछ इसी तरह() कैसे प्राप्त कर सकते हैं के लिए देख रहा हूँ
अद्यतन:
ADD_CUSTOM_COMMAND() कई आदेशों cmake एक बैच फ़ाइल में लिखते हैं हो सकता है। तो, आप पहले सभी रनटाइम निर्देशिकाओं के साथ पथ सेट कर सकते हैं, और उसके बाद परीक्षण निष्पादन योग्य निष्पादित कर सकते हैं।
MACRO(RunUnitTest TestTargetName)
IF(RUN_UNIT_TESTS)
SET(TEMP_RUNTIME_DIR ${PROJECT_BINARY_DIR}/bin/Debug)
FOREACH(TmpRuntimeDir ${PL_RUNTIME_DIRS_DEBUG})
SET(TEMP_RUNTIME_DIR ${TEMP_RUNTIME_DIR} ${TmpRuntimeDir})
ENDFOREACH(TmpRuntimeDir)
ADD_CUSTOM_COMMAND(TARGET ${TestTargetName} POST_BUILD
COMMAND echo "PATH=${TEMP_RUNTIME_DIR};%PATH%" > ${TestTargetName}_script.bat
COMMAND echo ${TestTargetName}.exe --result_code=no --report_level=no >> ${TestTargetName}_script.bat
COMMAND ${TestTargetName}_script.bat
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug
)
ENDIF(RUN_UNIT_TESTS)
ENDMACRO()
इस के साथ
, इकाई परीक्षण, त्रुटियों को पकड़ने जितनी जल्दी हो सके पूरे संकलित करने के लिए बिना: आसानी से परीक्षण मैन्युअल रूप से निष्पादित करने में सक्षम होने के लिए, मैं cmake निर्माण निर्देशिका में एक अतिरिक्त बैच फ़ाइल बना सकते हैं बहुत पहले
http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:install –