为一个非常基本的问题道歉。我正在尝试将CMake项目移植到visual项目中。基本上,我想在没有使用CMake文件的情况下从visual运行该项目。在我需要移植的项目中,有许多文件夹和子文件夹包含许多.cpp和.h文件。这些都包含在主cpp文件中,因为使用了#includes
。
My Case
我想包括的图书馆
还有我的main.cpp
例如,为了使事情变得简单,假设我有一个主文件main.cpp,这个文件包括#include "Libpfs/colorspace/colorspace.h"
。Libpfs是一个文件夹,它有许多子文件夹,其中一个是colorspace文件夹,它有许多.h和.cpp文件。一个colorspace.cpp.文件是.h文件,它包含在使用#include
的main.cpp中,该文件夹也有.cpp文件,即.cpp文件
我的尝试
我的目标是把他们纳入我的项目。下面是我在Visual Project->properties->C/C++中尝试的附加包含目录(),我给出了包含Libpfs的文件夹的路径,但是这种方法没有工作,并导致链接器错误--这可能是因为我没有Libpfs的lib文件(如果我错了,请纠正我)。我只有.cpp文件对应的.h文件。我认为导致错误的原因是.cpp文件尚未编译。
我的问题
如何将cpp文件也包含到我的项目中(因为我没有这些文件,所以不是lib文件)。
发布于 2021-01-21 11:21:19
使用这作为源代码,我发现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)))
我发现这个定义仅限于在上面使用的同一源的源中。它似乎来源于雪橇,根据这的说法,它应该会加速。但是,您应该度量这是否仍然是真的,而不是执行复制粘贴/货物邪教编程。我认为通常您应该使用标准库std::pow
,它为float
、double
和long double
提供了重载。在大多数情况下,编译器将为您优化它的使用。
发布于 2021-01-21 20:58:50
打开资源管理器,查找C:\Program Files\Microsoft SDK\
,然后在它的\lib中使用大量的.lib
的dir。它是.lib
和其他类似东西的msvc源代码。
https://stackoverflow.com/questions/65822278
复制相似问题