1. ホーム
  2. c++

[解決済み] cmakeでライブラリパスを追加するにはどうしたらいいですか?

2022-03-17 17:40:31

質問

私のプロジェクトには2つのフォルダ "inc"と "lib" があり、それぞれヘッダーと静的ライブラリが含まれています。cmakeに、これらの2つのディレクトリをそれぞれインクルードとリンクに使用するように指示するにはどうすればよいですか?

解決方法は?

一番簡単な方法は

include_directories(${CMAKE_SOURCE_DIR}/inc)
link_directories(${CMAKE_SOURCE_DIR}/lib)

add_executable(foo ${FOO_SRCS})
target_link_libraries(foo bar) # libbar.so is found in ${CMAKE_SOURCE_DIR}/lib

を追加しない現代のCMakeバージョン。 -I and -L フラグは、インポートライブラリを使用することになります。

add_library(bar SHARED IMPORTED) # or STATIC instead of SHARED
set_target_properties(bar PROPERTIES
  IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/lib/libbar.so"
  INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include/libbar"
)

set(FOO_SRCS "foo.cpp")
add_executable(foo ${FOO_SRCS})
target_link_libraries(foo bar) # also adds the required include path

を設定すると INTERFACE_INCLUDE_DIRECTORIES でパスが追加されない場合、CMake の古いバージョンでは target_include_directories(bar PUBLIC /path/to/include) . しかし、この は機能しなくなりました。 CMake 3.6 以降のバージョンで使用可能です。