【问题标题】:What is the -D define to tell CMake where to find nmake?告诉 CMake 在哪里可以找到 nmake 的 -D 定义是什么?
【发布时间】:2016-11-01 14:08:53
【问题描述】:

我在低端上网本上安装了Visual C++ Build Tools 2015 | Standalone compiler, libraries and scripts。这是必要的,因为机器有一个小的 eMMC 焊接到板上,没有可用的实际空间。

nmake 安装在%PROGRAM FILES%\Microsoft Visual Studio 14.0\VC\bin。但是,CMake 在尝试生成 Makefile 时找不到它。我想用-D 告诉CMake makefile 程序是什么,但是我找不到list of -D defines for CMake。

为了完整起见,我试图避免使用其他 Microsoft 工具。我在C:\LLVM\bin 有LLVM 构建工具,所以我设置CMAKE_C_COMPILER 和CMAKE_CXX_COMPILER。但我需要nmake,因为我找不到已经为 Windows 构建的独立 Make 程序。

-D 为 CMake 指定 nmake 的定义是什么?

【问题讨论】:

  • 通常你会从开始菜单启动“Visual Studio ... 命令提示符”。这会设置几个环境变量来查找编译器、库、包含和 nmake。然后你可以运行“cmake -G”NMake Makefiles。这将使用微软工具。
  • 我使用Ninja 作为我所有平台上所有项目的独立制作工具(只有一个可执行文件)。它快速且非常擅长依赖检查。 Ninja 必须在系统搜索路径中的某个位置,然后您可以调用cmake.exe -G "Ninja" ..|ninja。
  • 我相信目前仅使用 clang 是不可能的,因为它没有自己的链接器。因此,即使您使用 -D (CMAKE_MAKE_PROGRAM) (cmake.org/cmake/help/v3.0/manual/cmake-variables.7.html) 设置 NMake,它也很可能会失败。我相信您可以使用 (llvm.org/builds) 中的二进制文件并告诉 cmake 至少使用其中的编译器。我现在无法对此进行测试,因为我没有安装 Windows,但如果您不确定我在说什么,请告诉我,我会给您更多信息。
  • @Florian 我也用 ninja,你怎么告诉它在哪里寻找 cl 和链接?
  • @DavidMarquant - “你如何告诉它在哪里寻找 cl 和链接...” CL 使用 CMAKE_C_COMPILER 或 CMAKE_CXX_COMPILER 指定。我很快就会遇到另一个问题 - 如何指定 LD 和 AR。

标签: windows visual-c++ cmake nmake


【解决方案1】:

您要查找的变量是CMAKE_MAKE_PROGRAM。

如果尝试设置这个变量加上CMAKE_C_COMPILER、CMAKE_LINKER_EXE等,还是会失败,因为cl.exe和link.exe需要设置一些环境变量。这些可以通过使用“Visual Studio * 命令提示符”进行设置(这使用 Visual Studio 安装目录中的 vcvars.bat)。

要使用 Clang,您可以从 http://llvm.org/builds/ 安装 Clang 工具集。然后您可以在工具链文件中指定CMAKE_GENERATOR_TOOLSET。

让我知道这对你有什么影响。

【讨论】:

    【解决方案2】:

    CMAKE_MAKE_PROGRAM。见the documentation:

    【讨论】:

      猜你喜欢
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多