私はかなり長い間このことに苦労してきました。そして、cmakeの私の冒険は、私が間違っていると確信しているハッキリした解決策をもたらしました。私のC++プロジェクトをcmakeで構造化する正しい方法は?
次のように私は、いくつかのファイルで構成されてライブラリを作成しました:
-libfolder
-codepart1folder
-CMakeLists.txt
-codepart1.cpp
-codepart1.hpp
-codepart2folder
-codepart3folder
-lib.cpp
-lib.hpp
-CMakeLists.txt
私は(いくつかの実験の後)ライブラリをコンパイルするCMakeListsファイルを書いた、と私はlib.aファイルを生成することができます。今私はこのコードを他のプロジェクトのライブラリとして取り込み、lib.hppのインタフェースからアクセスしたいと思います。ディレクトリ構造の観点から、これを行うための最善の方法は何ですか?また、私のルートプロジェクトでCMakeLists.txtに入れる必要があるものは何ですか?
私の現在の試みは、私の現在のプロジェクトにサブフォルダとして-libfolder追加し、コマンドを追加することであった:
include_directories(${PROJECT_SOURCE_DIR}/libfolder)
link_directories(${PROJECT_BINARY_DIR}/libfolder)
add_subdirectory(libfolder)
target_link_libraries(project lib)
私はmakeを実行すると、ライブラリは罰金コンパイルするが、project.cppをコンパイルするときcodepart1.hpp(project.cppからインクルードされているlib.hppに含まれています)を見つけることができないという不満があります。
これは間違ったやり方だと思うが、私はCMakeのドキュメンテーションを眺めることができず、このようなプロジェクトをセットアップする上での良いチュートリアルを見つけることができない。助けてください、CMake gurus!
おそらくcmake per-seeにはあまり役に立たないかもしれませんが、私はあなたにpremakeを見てもらうことをお勧めします。それは成熟に近づいており、cmakeには多くの利点があります(1つは、あなたがすでにluaを知っている場合には、それを速くするのがずっと速いことです)。 http://industriousone.com/what-premakeで確認することができます。 – Ylisar
それで、あなたの新しいプロジェクトが以前にビルドされたライブラリを使用できるようにしたいのですか?それとも、両方ともsortofメタプロジェクトからビルドしたいですか? – moooeeeep