我正在尝试使用一个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."
- 来源于本网站
此Makefile
不打算与"本机"Windows工具链一起使用。您不能使用nmake
或make
的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的代码段。