如何解决如何在 Visual Studio 的 C++ 项目中包含库的 .cpp 和 .hpp 文件
对于一个非常基本的问题表示歉意。我正在尝试从 CMake 项目移植到 Visual Studio 项目。
基本上我想在不使用 CMake 文件的情况下从 Visual Studio 运行项目。在我需要移植的项目中,有很多文件夹和子文件夹,里面有很多 .cpp 和 .h 文件。这些使用 #includes
包含在主 cpp 文件中。
我的案例
和我的 main.cpp
例如,为了简单起见,假设我有一个主文件 main.cpp,该文件包含 #include "Libpfs/colorspace/colorspace.h"
。 Libpfs 是一个文件夹,它有许多子文件夹,其中一个是 colorspace 文件夹,它有许多 .h 和 .cpp 文件。一个 .h 文件是 colorspace.h,它使用 #include
包含在 main.cpp 中,该文件夹也有 .cpp 文件,即 colorspace.cpp。
我的尝试
我的目标是将它们包含到我的项目中。 现在这是我尝试过的 在 Visual Studio Project->properties->C/C++ 中的 Additional Include Directories 我给出了包含 Libpfs 的文件夹,但这种方法不起作用并出现链接器错误,这可能是因为我没有 Libpfs 的 lib 文件(如果我错了,请纠正我)。我只有相应的 .h 文件的 .cpp 文件。我认为错误的原因是 .cpp 文件尚未编译。
我的问题
如何将 cpp 文件也包含到我的项目中(不是 lib 文件,因为我没有这些文件)。
解决方法
使用 this 作为来源,我发现 CMakeLists.txt
不包含任何特殊内容。
FILE(GLOB COLORSPACE_H *.h)
FILE(GLOB COLORSPACE_HXX *.hxx)
FILE(GLOB COLORSPACE_CPP *.cpp)
SET(LIBPFS_H ${LIBPFS_H} ${COLORSPACE_H} ${COLORSPACE_HXX} PARENT_SCOPE)
SET(LIBPFS_CPP ${LIBPFS_CPP} ${COLORSPACE_CPP} PARENT_SCOPE)
因此您可以将所有文件添加到 VS C++ 项目中。我会使用一些目录管理,将这些来源与您自己的来源分开。
但无论如何,在这种情况下,您应该通过相对路径包含源。例如
#include "../../Libpfs/colorspace/colorspace.h"
或者,您可以将所有内容放在单独的 C++ 库中(静态 .lib
或动态 .dll
)。在这种情况下,您应该将二进制文件放在 bin
路径中并将其添加为附加库目录(您自己项目的项目属性)并将所有头文件放在 include/Libpfs
路径中并将其添加为附加包含目录。在这种情况下,您应该将文件包含为。
#include <Libpfs/colorspace/colorspace.h>
关于另一个话题
#define pow_F(a,b) (xexpf(b*xlogf(a)))
我发现这里只定义了 in the sources of the same source used above。
它似乎来自 sleef 并且根据 this 它应该提供加速。但是您应该衡量这是否仍然正确,而不是进行复制粘贴/cargo cult 编程。
我认为通常您应该使用标准库 std::pow
,它具有 float
、double
和 long double
的重载。在大多数情况下,编译器会为您优化其使用。
打开资源管理器,查找 C:\Program Files\Microsoft SDK\
然后在其 \lib 中查找带有大量 .lib
的目录。
它是 .lib
和其他类似内容的 msvc 源。在那里复制你的图书馆
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。