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

Modify make file from g++ to use Visual Studio C++

本文关键字:Visual Studio C++ g++ 修改 make 文件      更新时间:2023-10-16

我正在尝试使用一个Makefile,它应该在windows环境中运行。(这是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

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

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

FYI:1.我正在键入:nmake -f Makefile

正如在窗口中预期的那样,我得到了以下错误:

"'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. 来源于本网站

Makefile不打算与"本机"Windows工具链一起使用。您不能使用nmakemake的Windows版本。

你可以通过查看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的代码段。