从 g++ 修改 make 文件以使用 Visual Studio C++

问题描述 投票:0回答:2

我正在尝试使用应该在Windows环境中运行的Makefile。 (这是SVM火炬)。源网站告诉“您应该只需要更改以下几行,具体取决于您的特定平台”(逐字副本)

作为 Vis 的新手。 Studio C++ 我不知道我应该写什么来代替这段代码中的这些 g++:

 # C-compiler  
 CC=g++ 
 #CC=CC 
 # C-Compiler flags  
 CFLAGS=-Wall -W -O9 -funroll-all-loops -finline -ffast-math 
 #CFLAGS=-native -fast -xO5 
 # linker  
 LD=g++ 
 #LD=CC 
 # linker flags  
 LFLAGS=-Wall -W -O9 -funroll-all-loops -finline -ffast-math 
 #LFLAGS=-native -fast -xO5 
 # libraries  LIBS=-lm

我使用的是 Windows 7 和 Visual Studio 2010 Professional。

我知道我需要告诉使用哪个编译器,但还没有找到正确的word来替换g++

仅供参考: 1.我正在输入:

nmake -f Makefile

正如 Windows 中所预期的那样,我收到以下错误:

"'g++' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'g++' : return code '0x1'
Stop."
  1. 来源是这个网站
c++ visual-studio-2010 makefile g++
2个回答
0
投票

Makefile
不适合与“本机”Windows 工具链一起使用。您不能使用
nmake
或 Windows 版本的
make

你可以通过查看

Makefile
看到这一点,我复制了一个片段:

37 clean:
38         rm -f *.o
39         rm -f SVMTorch
40         rm -f SVMTest
41         rm -f convert

rm
不是 Windows 中的命令,因此即使您使用 Windows 版本的
make
和常规命令提示符,也会失败。

此外,该代码还包含 *nix 特定的代码。例如在

general.cc
:

33 long getRuntime(void)
34 {
35         struct tms buffer;
36         times(&buffer);
37         return((long)(buffer.tms_utime+buffer.tms_stime));
38 }

据我所知,这种类型

struct tms
和函数
times()
在Windows上不可用,因此如果您使用MSVC编译器(
cl
)将无法编译。

总而言之,您需要安装类似

mingw
的东西,它提供了一个类似 Unix 的 shell 和一个 GNU 编译器套件,才能以常规方式构建它。

但是,

Makefile
非常简单,所以我会尝试创建一个 MSVC 项目,将所有源文件添加到其中,看看会发生什么。由于
Makefile
包含三个可执行目标,因此您必须(至少)创建三个项目才能完成这项工作,但您可以从仅构建一个可执行文件开始,看看您能走多远。不过,您必须解决 *nix 特定的代码片段。


0
投票

适用于 Windows 上的 make

使用 CXX 和 CXXFLAGS 就可以了。它将使用 cl.exe 代替 g++
其他需要注意的是在文件路径中使用 / 并在使用 makefile 时使用 - 作为 cl.exe 选项。

© www.soinside.com 2019 - 2024. All rights reserved.