草庐IT

vs-cmake-examples

全部标签

c++ - dynamic_cast vs static_cast 无效*

在下面程序的最后两行中,static_cast和dynamic_cast表现不同。据我了解,dynamic_cast的结果始终解析为完整对象的地址。所以它以某种方式使用了RTTI。谁能解释一下编译器如何使用RTTI来区分两者。#includeusingnamespacestd;classTop{protected:intx;public:Top(intn){x=n;}virtual~Top(){}friendostream&operator(&b)(&b);cout(p)(p)可能的输出:https://ideone.com/WoX5DI281,2,3,40xbfcce60410xbf

c++ - CMake 不生成 compile_commands.json

我是CMake的新手,我正在尝试创建compile_commands.json文件以与clang一起使用,但我在生成文件时遇到了一些困难,我不确定为什么。我已经能够使用cmake编译我在下面的二进制person,但在成功之后我无法让它输出编译命令。我也尝试过使用-DCMAKE_EXPORT_COMPILE_COMMANDS=ON标志,但这也没有用。到目前为止没有错误,但也没有输出。这是我的CMakeLists.txt文件的样子:cmake_minimum_required(VERSION2.6)project(Tutorial)set(CMAKE_EXPORT_COMPILE_COMM

c++ - 无法使用 CMake 找到 Eigen3

我有点绝望:对于我的学习,我需要使用Eigen和CMake。如果我将整个库复制到我的编译器默认查找的目录中,但只要我尝试通过找到它,我就可以使用Eigenfind_package(需要Eigen3)我收到以下错误:CMakeErrorat/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:148(message):CouldNOTfindEigen3(missing:EIGEN3_INCLUDE_DIREIGEN3_VERSION_OK)(Requiredisatleastversion"2.91.0")CallSt

c++ - WINAPI C/C++ -> 为什么二进制文件的大小会急剧增加? (从 VS2013 切换到 VS 2015)

即使我知道我可能会因为问这个问题而受到抨击,但我仍然会继续问这个问题,因为它真的让我抓狂。我希望你们中的某个人可能对此事有所了解。在VS2013上编译MS的WIN32默认('非空'设置)项目产生一个二进制大小~16kb。在VS2015Update3上编译同一个项目会产生大约105kb的二进制大小(大6倍多!)。我对传递给cl.exe和link.exe的最终命令行参数进行了双重和三次检查,它们看起来完全相同(项目设置)。即使更改项目设置-大小优先于速度-也无济于事(二进制文件仍然是105kb)。这里到底发生了什么?我什至在第二台计算机上安装了VS2015,以排除“有缺陷”的安装——结果相

C++ float vs double cout setprecision 奇怪之处(新手)

谁能解释为什么当我使用setprecision()时这两个相同值的变量可以输出不同的值?#include#includeintmain(){floata=98.765;doubleb=98.765;//std::couta的输出将为98.76,而b的输出将为98.77。 最佳答案 那些变量不具有相同的值。当您将98.765的字面值double硬塞进float时,它必须进行最佳匹配,并且会损失一些精度。如果将精度更改为50,您可以很容易地看到这一点,您还会看到即使是double也不能准确表示该值:98.7649993896484375

c++ - 函数指针的模板参数推导(g++ & ICC vs Clang++ & VC++)

考虑以下程序:#includetemplatevoidfoo(constT*x){x();}voidbar(){std::cout它在clang++和VC++上编译良好,但g++给出以下编译器错误(参见现场演示here)main.cpp:Infunction'intmain()':main.cpp:10:9:error:nomatchingfunctionforcallto'foo(void(&)())'foo(bar);^main.cpp:3:6:note:candidate:templatevoidfoo(constT*)voidfoo(constT*x){^~~main.cpp:

c++ - 更改 CMAKE_CXX_FLAGS_DEBUG 和 CMake 中的 friend 的默认值

我想在CMake中更改CMAKE_CXX_FLAGS_RELEASE或CMAKE_CXX_FLAGS_DEBUG的默认值。基本上,我有一些项目默认值与CMake的默认值略有不同(例如,发布),我不必问自己“哦,当添加add_compile_options时,他们的-O3或我们的-O2是否优先。”现在,我知道如何设置这些值,但我不知道如何通过两种常用方式让用户可以编辑它们:通过在命令行上使用-DCMAKE_CXX_FLAGS_DEBUG=yourflags或通过使用ccmake或CMakeSetup配置它。问题是CMAKE为这些设置和缓存了自己的默认值,如果您尝试在不使用FORCE的情况

c++ - 将 FreeImage 链接为 VS2010 中的静态库?

我需要一个图片库,我一直在研究FreeImage,http://freeimage.sourceforge.net/.我想将它与我的应用程序静态链接。我尝试下载二进制文件并将其链接,但是当我尝试调用它们的函数时出现2019链接器错误,尽管我肯定我链接正确。然后我尝试下载他们的源代码,将他们的“FreeImageLib.2008”转换为VS2010并构建它。它自己构建得很好,但是在链接它时我仍然遇到同样的问题,我使用它的应用程序仍然提示链接器错误。我还设置了所有项目配置以匹配我的其他项目,因此与/MDd或/MTd等没有冲突。我在他们的源代码中做了一些挖掘,有像“FREEIMAGE_LIB

c++ - 使用 visual studio 创建一个 cmake 项目

VisualStudio2017为处理CMake项目提供内置支持。Thedocumentation主要涵盖基于预先存在的cmake项目的场景。但是是否支持创建cmake项目而无需摆弄CMakeLists.txt文件? 最佳答案 编辑:VS201715.6添加了官方新项目CMake向导与version15.6出现了“从添加新项目对话框创建CMake项目”的功能。这创建了一个简单的ninja基于C++“HelloCMake”项目。自定义CMake向导您的问题和现有向导的缺乏激发了我编写一个向导的灵感。这是一个非常基本的设置,如果在编写V

VS Code配置matlab

前言:matlab很好地集成了大量数学处理函数,甚至封装了包括信号处理、图像处理、神经网络等在内的方法。但matlab启动慢、没有代码补全、开发环境不友善等缺点常受人诟病,算法编写者往往需要进行大量重复动作。而VSCode是微软推出的一款轻量、开源、生态极好的编辑器。本文详细介绍使用VSCode配置matlab环境的方法,使算法编写者可以利用VSCode编写.m文件,充分利用VSCode的开发友善性与matlab的强大功能。本文需要的工具/软件:Matlab软件VSCode软件VSCode插件:CodeRunnerVSCode插件:MatlabVSCode插件:matlab-formatter