I've got the following code in C++
if (should_run_make) {
std::string make = "make -C ";
make.append(outdir);
std::cout << "Make cmd is " << make << std::endl;
system(make.c_str());
}
这里报告如下:
然而,手动执行该命令却可以以多种方式正常工作。Make命令是make -C /home/hamiltont/temp/ make: 进入目录
/home/hamiltont/temp' make: *** 没有指定目标. 停止. make: 离开目录
/home/hamiltont/temp'
[hamiltont@4 generator]$ make -C /home/hamiltont/temp/
make: Entering directory `/home/hamiltont/temp'
g++ -O3 -I/usr/include/openmpi-x86_64 -L/usr/local/lib -L/usr/lib64/openmpi/lib -lmpi -lmpi_cxx -lboost_serialization -lboost_mpi stg_impl.cpp -o impl
make: Leaving directory `/home/hamiltont/temp'
[hamiltont@4 generator]$ cd /home/hamiltont/temp/
[hamiltont@4 temp]$ make
g++ -O3 -I/usr/include/openmpi-x86_64 -L/usr/local/lib -L/usr/lib64/openmpi/lib -lmpi -lmpi_cxx -lboost_serialization -lboost_mpi stg_impl.cpp -o impl
type make
应该可以正常工作。 - Zan Lynxsystem()
调用的shell的PATH可能不同...您可以尝试使用system("which make")
并将其与shell的手动输出进行比较。您还可以尝试检查shell环境变量、别名、函数,它们可以自定义make的行为,提供额外的标志或更改行为。 - Tony Delroy