c# - 有没有更好的方法从 c# 项目运行 c++ 生成文件?

标签 c# c++ makefile pre-build-event

我有一个 C# 项目,它使用绑定(bind)来使用一些 C++ 代码。 C++ 代码由多个使用 makefile 编译的 DLL 组成。目前我正在尝试使用调用 nmake 的预构建事件来运行 makefile。但是,要让它找到 nmake,我需要在其中添加一行,如下所示:

"$(DevEnvDir)..\..\VC\vcvarsall.bat"

此外,即使存在该行,nmake 也不会在输出窗口中产生任何输出。它也不会抛出任何错误。我尝试将输出重定向到一个文件,但它什么也没写。我已经在普通 shell 中重现了预构建事件中的所有步骤,并且工作正常。我想我一定是遗漏了什么。为什么 Visual Studio 不为我的预构建事件提供 Visual Studio shell?有没有更好的方法来运行这个 makefile?如果没有,有没有人知道为什么 nmake 没有产生任何输出?

编辑:噢! nmake 没有运行,因为我忘记在行的开头添加“调用”,即:

call "$(DevEnvDir)..\..\VC\vcvarsall.bat"

最佳答案

我经常构建非 VS 项目(有时使用 nmake,有时使用其他构建工具)作为大型解决方案构建的一部分。

我倾向于制作一个简单的批处理文件,它会设置环境然后运行 ​​make。

我从构建事件中调用批处理文件(通常是在我的东西上构建后)——通常前面有一张 CD:

cd ..\.. && armbuild

从来没有(无论如何我记得)控制台窗口中出现的输出有任何问题。

关于c# - 有没有更好的方法从 c# 项目运行 c++ 生成文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3351132/

相关文章:

c# - 我对一些反射代码感到困惑,正在寻找见解

c# - 反对字符串,反之亦然

c++ - 函数调用中的 free struct 参数过多

makefile - nmake 附加到变量

sqlite - 如何为 WinRT/ARM 编译 sqlite?

c++ - 在 Eclipse 中编译 Cygwin 项目

c# - 发送 16 位数字到 SQL 数据库

c# - Asp.net 核心 2.1 UseHttpsRedirection 在 IIS 中不起作用

c++将二维数组作为参数传递给函数?

c++ - C++ 中 `virtual` 关键字对对象而不是指针的行为