我最近遇到了几个关于改善CMake启用C++项目周转时间的具体方面的问题(比如"我应该在什么级别分配我的构建过程?"或"cmake rebuild_cache 只是一个子目录?"),我是想知道是否有更一般的指导利用CMake提供的特定可能性.如果可能没有跨平台编译时优化,我主要对Visual Studio或基于GNU toochain的方法感兴趣.
我已经意识到并投资了一般推荐的领域来加速C++构建:
更改/优化/微调工具链
优化您的代码库/软件架构(例如,通过减少依赖关系并使用明确定义的子项目 - 单元测试)
投资更好的硬件(SSD,CPU,内存)
喜欢在这里,这里或这里推荐.所以我在这个问题上的重点是第一点.
另外我知道在CMake的Wiki中可以找到的建议:
前者只处理基础(并行make),后者主要处理如何加速解析CMake文件.
为了使这更具体一点,如果我从这里使用MSYS/GNU的100个库获取我的CMake示例,我得到了以下time测量结果:
$ cmake --version
cmake version 3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ time -p cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
-- Configuring done
-- Generating done
-- Build files have been written to: [...]
real 27.03
user …Run Code Online (Sandbox Code Playgroud) 只是想知道是否有与视觉工作室一起提供的'makedepends'等效物,我可以使用nmake.有人知道吗?
有没有办法在使用"nmake"编译时使用v110_xp工具集(而不是默认的"v110")?
我正在尝试为VisualStudio2012编译Qt5库,我也需要它在Windows XP机器上运行.我已经设法使用带有nmake的VS2012编译所有Qt5库,但即使是简单的测试应用程序也无法在XP机器上运行,因为" 程序入口点_except_handler4_common无法位于动态链接库msvcrt.dll中 ".(在Windows 7计算机上,我的测试应用程序正常工作)
作为我的最后一年项目的一部分,我需要将一些FORTRAN代码转换为C或C++(只要我能理解它,哪种语言无关紧要,我能理解C风格的语言).
我发现f2c,一个据称将FORTRAN转换为C的程序,并尝试按照说明安装它,方法是在我的驱动器上保存makefile.vc文件,然后执行
copy makefile.vc makefile
nmake
Run Code Online (Sandbox Code Playgroud)
(这是有关安装f2c的README文件的一部分,该文件包含在f2c 下载页面中)
要在Linux或Unix系统上编译f2c,请将makefile.u复制到makefile,必要时编辑makefile(参见下面的注释)并输入"make"(或者可能是"nmake",具体取决于您的系统).
要使用Microsoft Visual C++在MS Windows系统上编译f2c.exe,
复制makefile.vc makefile nmake
对于其他PC编译器,您可能需要使用-DMSDOS编译xsum.c(即使用MSDOS #defined).
如果您的编译器不理解ANSI/ISO C语法(即,如果您有K&R C编译器),请使用-DKR_headers进行编译.
在非Unix系统中,文件具有单独的二进制和文本模式,您可能需要"make xsumr.out"而不是"make xsum.out".
我正在运行x64位版本的Windows Vista并尝试"nmake",但我得到了
'nmake'不被识别为内部或外部命令,可操作程序或批处理文件.
我经过一些搜索后下载了Nmake15.exe但它在x64位机器上不起作用,显然没有它的版本.所以我在被告知可行的情况下下载了Windows SDK,但它没有改变任何东西.
我在哪里出错了,如果有的话,有没有办法将FORTRAN代码转换成C或C++?
我正在尝试使用msvc2015使用静态链接构建Qt5.5,但我遇到了以下错误(实际上有很多错误,但我只列出了一些,它们都完全相同):
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(50): error C2873: 'uint_fast64_t': symbol cannot be used in a using-declaration
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(52): error C2039: 'intmax_t': is not a member of '`global namespace''
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(52): error C2873: 'intmax_t': symbol cannot be used in a using-declaration
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(53): error C2039: 'uintmax_t': is not a member of '`global namespace''
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(53): error C2873: 'uintmax_t': symbol cannot be used in a …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个nmake makefile来自动将我们的balsamiq模型文件导出到png文件中,但是我担心如何制作一个通用规则无法做到这一点,而无需明确列出所有文件我想出口.
此页面详细介绍了导出文件的命令行语法,此页面包含一个示例,其中包含.obj文件到.exe文件的通用规则.
我到目前为止尝试过的makefile看起来像这样:
.bmml.png:
"C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $< $@
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
如果我只是运行nmake(带有一些过时的png文件),nmake就是这样做的:
[C:\Temp] :nmake
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
[C:\Temp] :
Run Code Online (Sandbox Code Playgroud)
如果我要求它构建一个特定的文件,它会这样做:
[C:\Temp] :nmake "TestFile.png"
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make '"TestFile.png"'
Stop.
[C:\Temp] :
Run Code Online (Sandbox Code Playgroud)
在那里任何一个可以让我直截了当的nmake大师?
一个示例makefile,通过复制它们来简单地从.txt文件生成.dat文件,以进行试验,如下所示:
.txt.dat:
copy $< $@
Run Code Online (Sandbox Code Playgroud)
这没什么用,所以显然我不明白这些通用规则是如何运作的.我是否需要指定一个目标,以某种方式列出我想要的文件?
编辑:回答新答案:
这个makefile:
{}.txt{}.dat:
copy $** …Run Code Online (Sandbox Code Playgroud) 如何在命令行上使用CMake和Visual Studio 2010?
使用Visual C++ Express Edition(2010),我会输入:
cmake .
nmake
nmake install
Run Code Online (Sandbox Code Playgroud)
简单.
我注意到在Visual Studio 2010中,CMake生成了一个解决方案文件而不是Makefile.所以我键入:
cmake .
msbuild mysolutionfile.sln
Run Code Online (Sandbox Code Playgroud)
但那又怎样?我曾经能够键入"nmake install",它会安装该项目.我现在要输入什么来安装项目?
我已经下载了一个Windows上的目标开源Qt.由于我使用VS2010命令提示符进行安装,因此它会自动将平台设置为msvc-2010.当我尝试使用nmake构建时,完成安装大约需要7-8个小时.在这个过程中,我注意到Qt正在编译我不需要的库,比如javascript.
我可以知道如何缩短构建过程,因为我专注于桌面开发吗?
我有visual studio 2013社区版,我得到了pbrt-v2代码库并且一直在尝试构建解决方案,但这是我遇到的错误之一(它与nmake似乎有关):
NMAKE - Error 1 error U1077: 'if' : return code '0x1'
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办,因为其他说明似乎不太清楚.任何帮助将不胜感激!谢谢你,祝你有个美好的一天!
-------------- UPDATE --------------------
我得到了它在Visual Studio 2013上编译和构建.问题是我认为我已经过时的PBRT文件了.基本上我做的是我通过github检查了项目,我认为应该可以工作,但后来我注意到你可以在网站上下载最新的pbrt-v2文件.事实上,作者有一个VS studio 2015的解决方案文件,我删除并重新安装了2013年,因为我认为这是问题所在.无论如何,使用我直接从网站下载的文件中的2012,我能够构建解决方案.我会保留这个问题以防万一有人遇到类似的问题.