小编Sim*_*mon的帖子

在Windows上使用CMake,Ninja和Clang构建

亲爱的C++编程员,

在使用Visual Studio工具链在Windows上构建一段时间后,我决定给Clang 5一个镜头.

我安装了LLVM 5.0.0二进制文件,Ninja构建环境,VS 2017工具和CMake 3.9.3.最终目标是能够使用VS Code编译C和C++应用程序,将CMake集成为"IDE",将Clang与LLD一起编译为编译器和链接器.

一个简单程序的编译和执行工作得非常好(相应终端历史的屏幕截图).Clang在VS Tools目录中自动检测到Windows的标准lib,并生成了可执行输出.

下一步是使用Ninja建立一个简单的构建(ninja.build文件和终端历史的截图).构建过程按预期工作,并像以前一样生成可运行的可执行文件.

当我开始将CMake集成到流程中时,问题就开始了.我的期望是CMake生成一个ninja构建文件并运行它,对吗?我尝试了以下CMakeLists文件

cmake_minimum_required(VERSION 3.9)

project(Test)

add_executable(Test main.c)
Run Code Online (Sandbox Code Playgroud)

并称为CMake cmake -G Ninja.由此产生的结果是令人失望的,我不明白,分别自己解决问题.

-- The C compiler identification is Clang 5.0.0
-- The CXX compiler identification is Clang 5.0.0
-- Check for working C compiler: C:/Meine_Programme/LLVM/bin/clang.exe
-- Check for working C compiler: C:/Meine_Programme/LLVM/bin/clang.exe -- broken
CMake Error at C:/Meine_Programme/CMake/share/cmake-3.9/Modules/CMakeTestCCompiler.cmake:51 (message):
  The C compiler "C:/Meine_Programme/LLVM/bin/clang.exe" is not able to
  compile a simple test program.

  It fails with …
Run Code Online (Sandbox Code Playgroud)

windows cmake clang ninja

18
推荐指数
2
解决办法
1万
查看次数

在 x64 Windows 上使用 CMake、Ninja 和 Clang 构建 x86 应用程序

我想在我的 x64 Windows 计算机上构建 x86 Windows 应用程序。

\n\n

我使用 CMake、Ninja、clang-cl、lld-link 和 VS Build Tools 2017 以及以下 CMakeLists

\n\n
cmake_minimum_required(VERSION 3.9)\nproject(Test CXX)\n\nadd_library(TestLib STATIC "")\ntarget_include_directories(TestLib\n  PUBLIC\nTestLib/inc\n)\ntarget_sources(TestLib\n  PRIVATE\n    TestLib/src/Flop.cpp\n    TestLib/src/testClass.cpp\n)\n\nadd_executable(Test "")\ntarget_sources(Test\n  PRIVATE\n    src/main.cpp\n)\ntarget_link_libraries(Test\n  TestLib\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的设置适用于 x64 应用程序。我初始化构建环境并vcvars64调用 cmake

\n\n
cmake -G Ninja -DCMAKE_CXX_COMPILER:PATH="C:\\MeineProgramme\\LLVM\\bin\\clang-cl.exe" -DCMAKE_LINKER:PATH="C:\\MeineProgramme\\LLVM\\bin\\lld-link.exe"\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会产生完美的忍者构建文件并生成功能性可执行文件。

\n\n

如果我想构建 x86 应用程序,CMake 无法检测构建环境。vcvars32我使用或初始化构建环境,vcvarsamd64_x86并使用与上面相同的命令来调用 CMake。这会导致在检测构建环境期间出现错误。

\n\n

CMake错误日志有以下内容

\n\n
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.\nCompiler: C:/MeineProgramme/LLVM/bin/clang-cl.exe \nBuild flags: \nId flags:  \n\nThe output was:\n1120\nLINK : error LNK2001: Nicht …
Run Code Online (Sandbox Code Playgroud)

architecture windows cmake clang ninja

6
推荐指数
1
解决办法
7597
查看次数

SPARK 中的任务需要按顺序进行细化

我目前正在大学实时编程语言课程中学习 Ada,并且有一个关于 SPARK 的问题。

我正在开发一个项目,其任务是监视离网电源。这项任务对于机器安全至关重要,因此应该尽可能没有错误,经过 SPARK 验证。

我收到这个奇怪的错误,我无法找到修复方法11:14 tasking in SPARK requires sequential elaboration (SPARK RM 9(2)) violation of pragma SPARK_Mode

原始代码有点长,但我能够通过一个最小的示例得到相同的错误。

规格:

pragma Profile (Ravenscar);
pragma SPARK_Mode;

with System;

package simple_monitoring is

   function sign (val : in Float) return Float
     with Pre => val >= 10.0;

   task type myTask is
   end myTask;

end simple_monitoring;
Run Code Online (Sandbox Code Playgroud)

实施:

pragma Profile (Ravenscar);
pragma SPARK_Mode;

with Ada.Real_Time; use Ada.Real_Time;
with Ada.Text_IO; use Ada.Text_IO;

package body simple_monitoring is

   function sign (val : in Float) …
Run Code Online (Sandbox Code Playgroud)

ada gnat spark-ada

2
推荐指数
1
解决办法
287
查看次数

Ada通用类型图像属性

我目前正在大学的实时编程语言课程中学习Ada,并对泛型有疑问.

我有一个通用的程序 csv_put

package PSU_Logging is

   type logged_signal_names_t is (
      t,
      U_V1,
      I_L1,
      U_C1,
      I_L2,
      U_C2,
      I_Load
   );

private
   ... Some types, tasks and subprogramms ...

   generic
      type Item_Type_t is private;
      procedure csv_put (File : in File_Type; Item : in Item_Type_t);

end PSU_Logging;
Run Code Online (Sandbox Code Playgroud)

与定义

package body PSU_Logging is

   procedure csv_put (File : in File_Type; Item : in Item_Type_t) is
   begin
      Put (File, Item_Type_t'Image (Item));
      Put (File, ", ");
   end csv_put;

   procedure csv_put_float is new csv_put (Item_Type_t => Float);
   procedure csv_put_duration …
Run Code Online (Sandbox Code Playgroud)

generics ada

0
推荐指数
1
解决办法
411
查看次数

标签 统计

ada ×2

clang ×2

cmake ×2

ninja ×2

windows ×2

architecture ×1

generics ×1

gnat ×1

spark-ada ×1