আমি উত্পাদনের উত্সগুলিকে ( src
সাবফোল্ডারটিতে) এবং পরীক্ষাগুলি (সাবফোল্ডারে) অন্তর্ভুক্ত করার জন্য আমার প্রকল্পের কাঠামোর চেষ্টা করছি test
। আমি এটি তৈরিতে সিএমকে ব্যবহার করছি। সর্বনিম্ন উদাহরণ হিসাবে আমার কাছে নিম্নলিখিত ফাইলগুলি রয়েছে:
CMakeLists.txt:
cmake_minimum_required (VERSION 2.8)
project (TEST)
add_subdirectory (src)
add_subdirectory (test)
src / CMakeLists.txt:
add_executable (demo main.cpp sqr.cpp)
src / sqr.h
#ifndef SQR_H
#define SQR_H
double sqr(double);
#endif // SQR_H
src / sqr.cpp
#include "sqr.h"
double sqr(double x) { return x*x; }
src / main.cpp - sqr ব্যবহার করে, আসলেই কিছু যায় আসে না
পরীক্ষা / CMakeLists.txt:
find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED)
include_directories (${TEST_SOURCE_DIR}/src)
ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK)
add_executable (test test.cpp ${TEST_SOURCE_DIR}/src/sqr.cpp)
target_link_libraries(test
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}
)
enable_testing()
add_test(MyTest test)
পরীক্ষা / test.cpp:
#define BOOST_TEST_MODULE SqrTests
#include <boost/test/unit_test.hpp>
#include "sqr.h"
BOOST_AUTO_TEST_CASE(FailTest)
{
BOOST_CHECK_EQUAL(5, sqr(2));
}
BOOST_AUTO_TEST_CASE(PassTest)
{
BOOST_CHECK_EQUAL(4, sqr(2));
}
কিছু প্রশ্ন:
- এই কাঠামোটি কি কোনও অর্থবোধ করে? এই কোডটি কাঠামোগত করার সময় সেরা অনুশীলনগুলি কী কী? (আমি সি # এবং জাভা থেকে আসছি, এবং সেখানে এটি এক অর্থে আরও সহজ)
- আমি
src
ফোল্ডারের ফোল্ডার থেকে সমস্ত ফাইল তালিকাভুক্ত করতে হবে তা আমার পছন্দ নয়test/CMakeLists.txt
। এটি যদি একটি লাইব্রেরি প্রকল্প হয় তবে আমি কেবল লাইব্রেরিটি লিঙ্ক করব। অন্য প্রকল্প থেকে সমস্ত সিপিপি ফাইল তালিকাবদ্ধকরণ এড়ানোর উপায় আছে? - কি লাইন
enable_testing()
এবংadd_test(MyTest test)
করছেন? আমি কোন প্রভাব দেখিনি। আমি কীভাবে সিএমকে (বা সিস্টেস্ট) থেকে পরীক্ষা চালাতে পারি? - এখন পর্যন্ত আমি কেবল
cmake .
মূল ফোল্ডারে দৌড়েছি , কিন্তু এটি সর্বত্র অস্থায়ী ফাইলগুলির সাথে বিশৃঙ্খলা তৈরি করেছে। আমি কীভাবে যুক্তিসঙ্গত কাঠামোর সংকলনের ফলাফল পেতে পারি?