私のプロジェクトには2つのフォルダー「inc」と「lib」があり、それぞれヘッダーと静的ライブラリーがあります。これら2つのディレクトリをそれぞれインクルードとリンクに使用するようにcmakeに指示するにはどうすればよいですか?
これを行う最も簡単な方法は、追加することです
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
すべてのコンパイラー呼び出しに-I and -L
フラグを追加しない最新のCMakeバージョンでは、インポートされたライブラリーを使用します。
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以降では、これは 動作しなくなりました です。