2012-11-25 31 views
10

मैं निम्नलिखित संरचना के साथ एक परियोजना है। शीर्ष स्तर CMakeLists.txt बस सेट भी शामिल है और कहते हैं src और परीक्षण उपनिर्देशिका:कोई परीक्षण जब cmake साथ gtest का उपयोग कर पाया/ctest

cmake_minimum_required(VERSION 2.8) 

add_library(linalg linalg/vector3.cpp) 

:

cmake_minimum_required(VERSION 2.8) 

project(linalg) 

include_directories(include) 
add_subdirectory(src) 
add_subdirectory(test) 

src/CMakeLists.txt फ़ाइल एक स्थिर पुस्तकालय में vector3.cpp संकलित

cmake_minimum_required(VERSION 2.8) 

enable_testing() 
find_package(GTest REQUIRED) 
include_directories(${GTEST_INCLUDE_DIRS}) 

add_executable(test_vector3 linalg/test_vector3.cpp) 
target_link_libraries(test_vector3 linalg ${GTEST_BOTH_LIBRARIES} pthread) 

add_test(test_vector3 test_vector3) 

मैं उसके बाद निम्न चलाएँ:: परीक्षा/CMakeLists.txt फ़ाइल /usr/share/cmake-2.8/Modules/FindGTest.cmake में प्रदान की जाती उदाहरण पर आधारित है

01,235,
cd build 
cmake .. 
make 

मुझे liblinalg.a लाइब्रेरी को/src बनाने के लिए सही ढंग से संकलित किया गया है और मुझे test_vector3 निष्पादन योग्य बनाने/परीक्षण करने के लिए सही ढंग से संकलित किया जाता है। मैं test_vector3 निष्पादन चला सकते हैं और मैं कह रही है कि सभी परीक्षणों बीत चुके हैं googletest से उत्पादन मिलता है, लेकिन अगर मैं चलाने make test मुझे कोई उत्पादन जो भी मिलता है और अगर मैं ctest .. चलाने मुझे यह संदेश मिलता है:

Test project /home/ryan/GitHub/linalg/build 
No tests were found!!! 

वहाँ है मुझे कुछ याद आ रहा है? या क्या मैंने अभी गलत समझा है कि gtest के साथ ctest कैसे काम करता है?

उत्तर

19

समस्या का क्रूक्स यह है कि enable_testing को इस मामले में अपने शीर्ष-स्तर के CMakeLists.txt से कॉल किया जाना चाहिए। अपने शीर्ष-स्तर के CMakeLists.txt में include(CTest) जोड़ना आपके लिए इसे ठीक करना चाहिए।

यह आपको enable_testing परीक्षण/CMakeLists.txt में कॉल करने की अनुमति देगा, क्योंकि सीटीईटी सबमिशन enable_testing आंतरिक रूप से कॉल करता है।

0

बस इसे अपडेट करने के लिए।

संस्करण 3.9 में सेमेक ने सीटीएस्ट के साथ GoogleTest एकीकरण के लिए समर्थन जोड़ा।

तो अब आप पूरी तरह से निष्पादन योग्य नहीं, अपने परीक्षण निष्पादन योग्य में सभी परीक्षण मैक्रोज़ को स्क्रैप करने के लिए सीटीएस्ट प्राप्त कर सकते हैं।

उदाहरण उदाहरण: https://gist.github.com/johnb003/65982fdc7a1274fdb023b0c68664ebe4