私は小さいながらも自明ではないプロジェクトを持っています。これはアーキテクチャ上の理由から 3 つの別々のプロジェクトとして構築されており、相互に依存しているため、特に集中したり、穴を見つけてテスト カバレッジを改善したりしない限り、それは理にかなっています。プロジェクトのルートから作業します。
レイアウトは次のとおりです。
/CMakeLists.txt
/build/
/src/command-line-application/
/src/command-line-application/CMakeLists.txt
/src/command-line-application/build/
/src/command-line-application/src/
/src/command-line-application/tests/
/src/command-line-application/include/
/src/vlc-plugin/
/src/vlc-plugin/src/
/src/libmyproject/
/src/libmyproject/CMakeLists.txt
/src/libmyproject/build/
/src/libmyproject/src/
/src/libmyproject/tests/
/src/libmyproject/include/
/src/libmyotherproject/
/src/libmyotherproject/CMakeLists.txt
/src/libmyotherproject/build/
/src/libmyotherproject/src/
/src/libmyotherproject/tests/
/src/libmyotherproject/include/
アーキテクチャに関する言葉libmyproject
は、私のアプリケーションの真髄です。CLI はライブラリとしてコードをエンドユーザーに出荷する恐ろしい方法であるため、このように構築されています。C# および Objective-C アプリケーションからも使用されます。(そしてすべてが期待どおりに機能します)
はlibmyotherproject
プラットフォーム固有のサポート コードであり、 に直接接続されていませんlibmyproject
。いくつかの単体テストがあります。
のすべてに単体テストがvlc-plugin
あるわけではないことを示す以外は、ここでは重要ではありません。/src/*/
私のワークフローは通常、何か役に立つものが見つかるまで CLI アプリをハッキングし、それをライブラリにリファクタリングして、移植可能であることを確認することです。
で作業している場合/src/*/build/
、通常は を実行しているcmake ../ && make && ctest --output-on-failure
場合、すべてが機能します。
で作業していて/build
を実行するcmake
と、個々のコンポーネントはadd_subdirectories()
CMake から ( を使用して)正しくビルドされますがCTest
、再帰的にテストを見つけることはできません。
のドキュメントCTest
は、何をすべきかについて少し役に立ちません。
USAGE
ctest [options]
DESCRIPTION
The "ctest" executable is the CMake test driver program. CMake-generated build trees created for
projects that use the ENABLE_TESTING and ADD_TEST commands have testing support. This program will
run the tests and report results.
ADD_TEST()
コールが にあるので、コールが実行されることを期待/src/libmyotherproject/tests/CMakeLists.txt
していたでしょうか? cmake
(から実行すると、少なくともコンパイルされます/build/
)
十分な情報を提供できたと思います。ありがとうございます。