Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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++ 在windows上制作,加载静态库_C++_Windows_Visual C++_Cmake - Fatal编程技术网

C++ 在windows上制作,加载静态库

C++ 在windows上制作,加载静态库,c++,windows,visual-c++,cmake,C++,Windows,Visual C++,Cmake,我正在为我的qt5应用程序准备windows build,但在加载static library.lib时遇到问题。 我的应用程序使用3d引擎,最初是在linux gcc+cmake上构建的,现在在windows上我尝试使用msvc+cmake。3d引擎静态库称为engined.lib。要加载库,请执行以下操作: SET(CMAKE_FIND_LIBRARY_PREFIXES "") SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll") find_libra

我正在为我的qt5应用程序准备windows build,但在加载static library.lib时遇到问题。 我的应用程序使用3d引擎,最初是在linux gcc+cmake上构建的,现在在windows上我尝试使用msvc+cmake。3d引擎静态库称为engined.lib。要加载库,请执行以下操作:

SET(CMAKE_FIND_LIBRARY_PREFIXES "")
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
find_library(engine NAMES engined PATHS path_to_lib)
target_link_libraries(${PROJECT_NAME}
    Qt5::Widgets
    Qt5::OpenGL
    Qt5::Xml
    engine)
但在流程编译过程中会出现错误,例如,在我的cpp文件中,我正在加载标题:

#include "engine/Engine.h"

但是,msvc没有看到.h文件,我有错误。我做错了什么?

您正在针对库进行链接,但仍然需要配置CMake,以便找到引擎的标题。一种方法是通过缓存变量设置头的位置:

# CMakeLists.txt
set(ENGINE_INCLUDE_DIR "" CACHE PATH "Include directory")
target_include_directories(engine PRIVATE ${ENGINE_INCLUDE_DIR})
并在配置生成目录时设置变量:

cmake -DENGINE_INCLUDE_DIR=/path/to/include/dir /path/to/project