私のプロジェクトには2つのユーティリティライブラリがあります。私はライブラリのCMake設定を書くための最善の方法を探しています。CMakeにライブラリを含むヘッダーを含める
/my_project
--> CMakeLists.txt
--> main.cpp
--> /utils
--> CMakeLists.txt
--> common.h
--> /base_c
--> CMakeLists.txt
--> base_c.c
--> base_c.h
--> /base_cpp
--> CMakeLists.txt
--> base_cpp.cpp
--> base_cpp.hpp
私の現在のcmakeのファイル:
/my_project/CMakeLists.txt
cmake_minimum_requared(VERSION 3.8)
project(my_project)
add_subdirectory(utils)
add_executable(main main.c)
target_link_libraries(main utils base_c base_cpp)
/my_project/utils/CMakeLists.txt
add_subdirectory(base_c)
add_subdirectory(base_cpp)
add_library(utils)
target_sources(utils PUBLIC common.h)
/MY_PROJECT/utilsの/ base_c /CMakeLists.txt
add_library(base_c base_c.c)
target_sources(base_c PUBLIC base_c.h)
/my_project/utils/base_cpp/CMakeLists.txt
add_library(base_cpp base_cpp.cpp)
target_sources(base_cpp PUBLIC base_cpp.hpp)
find_library(BASEC base_c ../base_c)
target_link_libraries(base_cpp BASEC)
問題はbase_cpp
見つけられませんが、base_c
から含まれていることです。設定をどのように修正する必要がありますか?
私はtarget_include_directories(base_cpp PRIVATE ../base_c)
と動作させることができましたが、それは醜いので、必要ではありません。INTERFACE_INCLUDE_DIRECTORIES documentationに従ってください。
? 'include_directories'や' target_include_directories'を使わずに単一のライブラリをコンパイルする方法が不思議です。 – Tsyvarev
@Tsyvarev私はこれについて完全に間違っているかもしれません。ライブラリの 'INTERFACE_INCLUDE_DIRECTORIES'をどのように使うことができるのか説明できますか? – voddan
CMakeの後にどのビルドシステムを使用しますか? Makefiles? Visual Studioプロジェクト?ディレクトリが実際にインクルードディレクトリとして渡されるファイルを調べることはできますか? – Anedar