草庐IT

CPACK_WIX_INCLUDE

全部标签

c++ - 使用带有 cmake/cpack 的 boost 库打包 c++ 程序

我编写了一个使用boost的简单c++程序,我想将它部署在具有任何linux风格(暂时)的相同架构的机器上,这些机器可能安装了也可能没有安装一些boost版本。我是部署新手,但试图阅读文档并提出一个CMakeLists.txt,它看起来像:cmake_minimum_required(VERSION2.8)project(myprog)FIND_PACKAGE(Boost1.50COMPONENTSthreadsystemchronoprogram_optionsREQUIRED)INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})add_executab

c++ - 使用宏构造#include 指令的路径

我希望包含由宏为我的程序的目标配置相关部分动态创建的文件路径。例如,我想构造一个可以像这样调用的宏:#includeTARGET_PATH_OF(header.h)这将扩展为这样的内容:#include"corefoundation/header.h"当源配置(在这种情况下)为OSX时到目前为止,所有尝试都失败了。我希望外面有人这样做过?不起作用的例子:#include#include#defineDirdirectory/#defineFilefilename.h#defineMakePath(f)BOOST_PP_STRINGIZE(BOOST_PP_CAT(Dir,f))#def

c++ - 为什么在使用 typeid 运算符时需要#include <typeinfo>?

typeid表示C++RTTI运算符也是C++关键字。它返回一个std::type_info保存(动态)类型特定信息的对象。根据我从各种来源了解到的情况,其中一个必须包含使用typeid时,否则程序格式错误。事实上,如果我不包含前面提到的头文件,我的gcc5.2编译器甚至不会编译程序。我不明白为什么使用C++keyword时必须包含header。我理解每当我们使用在该header中声明/定义的某些对象时都需要一个header,但是typeid不是类类型。那么,强制包含header的原因是什么?? 最佳答案 下一段:Thetypeid

c++ - Visual Studio 2010 专业版 : Cannot find include file "new.h"

所以我刚刚获得了VisualStudio2010Professional,我创建了一个简单的mfc应用程序,添加了一些代码并且没有更改任何项目设置。当我尝试编译它时,我得到了这个错误:1>------Buildstarted:Project:cadmenu,Configuration:ReleaseWin32------1>Buildstarted10/15/20133:44:26PM.1>InitializeBuildStatus:1>Touching"Release\cadmenu.unsuccessfulbuild".1>ClCompile:1>stdafx.cpp1>C:\Pr

C++ - 嵌套包含 - 避免 'include nested too deeply error'

如果我想在我的C++代码中拥有以下连接,那么声明头文件的最佳方式是什么,以免出现'includenestedtoodeep错误'?在我的边缘类中,我有一些需要返回Node对象的函数。Edge类也是如此,我有需要返回Node对象的函数。但是编译器不允许我有这个嵌套循环的东西。Node.h#ifndef_NODE_h__#define__NODE_h__#include"Edge.h"public:Node();~Node();voidsetName(string);stringgetName();voidaddEdge(Edge*);vectorgetEdges(){return_edg

c++ - #include <> 和 #include ""

这个问题在这里已经有了答案:关闭13年前.PossibleDuplicate:whatisthedifferencebetween#includeand#include“filename”除了编译器将搜索的路径方式之外,这两种#include语法是否存在根本区别?我感觉Intel的编译器并没有给出完全相同的输出。 最佳答案 根本区别是搜索路径。您应该对“系统”包含使用尖括号形式,对项目本地包含使用常规引号。 关于c++-#include和#include"",我们在StackOverfl

c++ - Lzz (Lazy C++) - #include 文件未找到

我正在尝试使用Lzz从我的*.cpp文件生成C++头文件。调用顺序是这样的:./lzz-hxhpp-c-ooutsrc/*.lzz不幸的是,它总是说找不到任何包含的header,包括标准库的部分,例如iostream、string和vector。我收到一堆这样的错误消息:src/CommonIO.lzz:7:10:#include文件未找到。src/CommonIO.lzz:8:10:#include文件未找到。src/CommonIO.lzz:9:10:#include文件未找到。我知道我可以使用-I参数给它包含路径:-I/usr/local/include/c++/4.5.1但它似

c++ - 可以将标准的纯 C header #include 指令放在命名空间中吗?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Isitagoodideatowrapan#includeinanamespaceblock?我有一个类log的项目在全局命名空间(::log)中。所以,很自然地,在#include之后,每次我尝试实例化日志类的对象时,编译器都会给出一条错误消息,因为用许多三字母方法污染全局命名空间,其中之一是对数函数log().所以有三种可能的解决方案,每一种都有其独特的丑陋副作用。将日志类移动到它自己的命名空间,并始终使用它的完全限定名称访问它。我真的想避免这种情况,因为记录器应该尽可能方便使用。写一个mathwrapp

c++ - C++ 标准是否需要 `#include <math.h>` 来定义 `abs` 中的 `<cmath>` 重载?

C++标准在中定义了一些重载函数。不属于的headerC中的header(因为C没有重载)。其中有floatabs(float),doubleabs(double),longdoubleabs(longdouble),和doubleabs(Integral).另一方面,abs未在C中定义完全没有(它在中),唯一的签名是intabs(int).现在在我的系统上,当使用带有C++程序的C++编译器时,#include不提供C++abs重载,在全局命名空间或std中.另一方面,#include定义std::abs.这正是我所期望的——包含C版本以获取C函数,并包含C++版本以获取C++函数。

c++ - 编译器如何知道在哪里可以找到#include <stdio.h>?

我想知道MacOSX、Windows和Linux上的编译器如何知道在哪里可以找到C头文件。具体来说,我想知道它如何知道在哪里可以找到带有的#include括号。#include"/Users/Brock/Desktop/Myfile.h"//absolutereference#include//systemrelativereference?我假设它所咨询的系统上有一个文本文件。它如何知道在哪里寻找标题?是否可以修改此文件,如果可以,此文件位于操作系统的什么位置? 最佳答案 编译器构建后,它知道一些标准位置来查找头文件。其中一些与编