Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake:包含外部库标题_C++_Qt_Cmake - Fatal编程技术网

C++ CMake:包含外部库标题

C++ CMake:包含外部库标题,c++,qt,cmake,C++,Qt,Cmake,我有这个片段,它工作得很好: find_package(Qt5 COMPONENTS Core REQUIRED) target_link_libraries( myproj Qt5::Core ) target_include_directories( myproj PRIVATE ${Qt5Core_INCLUDE_DIRS} ) 因为我想用。现在我运行find_library(LIB_qwt qwt)并轻松获得的路径。但是如何获取标题路径并将其添加到目标\u include\u目录()

我有这个片段,它工作得很好:

find_package(Qt5 COMPONENTS Core REQUIRED)
target_link_libraries( myproj Qt5::Core )
target_include_directories( myproj PRIVATE ${Qt5Core_INCLUDE_DIRS} )
因为我想用。现在我运行
find_library(LIB_qwt qwt)
并轻松获得
的路径。但是如何获取标题路径并将其添加到
目标\u include\u目录()

我真的需要手动包含Qt吗?如果我没有(但我以一种丑陋的方式包含了Qwt文件),Qwt的头会因为没有发现Qt而中断编译


这是我的Qwt安装:
libqwt-qt5-dev
您应该能够在
查找库(LIB\u Qwt Qwt)之后添加
${LIB\u INCLUDE\u DIR}
${Qwt INCLUDE\u DIR}
目标目录
。您必须手动包含Qt

如果这不起作用,您可以自己搜索路径,您可以使用
find\u path
如下:

find_path(QWT_INCLUDE_DIR qwt.h)
target_include_directories( myproj PRIVATE ${Qt5Core_INCLUDE_DIRS} ${QWT_INCLUDE_DIR})

qwt.h
显然必须在路径上的某个地方。

我将使用此文件并执行以下操作:
target\u link\u库(myproj PRIVATE Qt5::core qwt::qwt)
。而且您不需要执行
target\u include\u目录(…)
,因为include目录是在
Qt5::core
目标中声明的。@kanstar在复制中使用将其粘贴到我的项目中?通常您会将该文件包含到您的项目中。将该文件添加到项目树中的目录中,例如
cmake/Modules
,并将该路径添加到主
CMakeLists.txt
中的
cmake\u模块路径中,如
列表(追加cmake\u模块路径“${cmake\u CURRENT\u list\u DIR}/cmake/Modules”)
。当然,您必须首先执行
查找包(Qwt)
在使用
target\u link\u库(…)
@kanstar之前,它使用了类似的cmake。