CMake でコマンド-I
を使用してインクルード パス ( ) を設定するのに問題があるようです。include_directories()
私のプロジェクトディレクトリは次のとおりです。
Root
| - CMakeLists.txt
| - libs
| - | - CMakeLists.txt
| - | - inc
| - | - | - // lib specific includes
| - | - src
| - | - | - // lib specific sources
| - proj1
| - | - CMakeLists.txt
| - | - inc
| - | - | - // proj1 specific includes
| - | - src
| - | - | - // proj1 specific sources
ルートCMakeLists.txt
ファイルは次のようになります。
project(ROOT)
add_subdirectory(libs)
add_subdirectory(proj1)
以下のCMakeLists.txt
ファイルlibs
:
project(lib)
add_library(lib STATIC ${lib_hdrs} ${lib_srcs}) // for conciseness, omitted set()
そして最後に、CMakeLists.txt
以下のファイルproj1
:
project(proj1)
include_directories("${ROOT_SOURCE_DIR}/lib/inc") # <- problem line?
add_executable(proj1 ${proj1_srcs})
target_link_libraries(proj1 lib)
目標は、libs のソース ファイルとヘッダー ファイルからライブラリを作成し、proj1 で生成された実行可能ファイルにリンクすることです。Proj1 には#include
、libs に含まれるファイルがいくつかあるため、 で使用するディレクトリを追加する必要があり-I
ます。ドキュメントに基づいて、それがinclude_directories()
すべきことです。ただし、それを明示的に設定して debugを実行message(${INCLUDE_DIRECTORIES})
しても、INCLUDE_DIRECTORIES
変数は空の文字列であり、インクルード パスにディレクトリが指定されていないため、proj1 のコンパイルは失敗します。
また、引用符を削除して、${ROOT_SOURCE_DIR}/inc
それが役に立ったかどうかを確認しましたが、うまくいきませんでした。