我正在使用cmake 3.9.1版。如何使用CMake爲導入的共享庫指定include目錄?
我的源代碼樹中有第三方共享庫和頭文件。我試圖將其添加爲鏈接目標。
所有我能找到的文件說,這應該工作:
test.cpp
#include "ftd2xx.h"
int main(int argc, char **argv)
{
FT_HANDLE handle;
FT_STATUS status = FT_Open(1, &handle);
return 0;
}
CMakeLists.txt
cmake_minimum_required (VERSION 3.6)
project(test_proj CXX)
add_subdirectory(ftdi)
add_executable(mytest test.cpp)
target_link_libraries(mytest ftd2xx)
ftdi/CMakeLists.txt
add_library(ftd2xx SHARED IMPORTED)
set_target_properties(ftd2xx PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(ftd2xx PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR})
但是,編譯包含「ftd2xx.h」的test.cpp會抱怨它無法找到頭文件,並且在生成的makefile中缺少相關的-I<path>
條目。
如果我指定庫爲INTERFACE
而不是SHARED IMPORTED
那麼頭文件找到正確,但CMake barfs設置爲IMPORTED_LOCATION
屬性。
如果我指定庫爲INTERFACE
而不是SHARED IMPORTED
,然後使用target_link_libraries
直接指向庫文件,而不適用於Windows,但不適用於Linux。
我會很感激任何人可以提供幫助。