标签: ninja

Jenkins Visual Studio x64 提示(用于 CMake 和 Ninja)

我有一个带有 Visual Studio 2012 的 Jenkins slave,想为 x64 构建。我需要的是我在 Windows 开始菜单中运行工具提示链接时得到的提示环境。人们建议这样做(在 Jenkins Windows Batch 提示中):

call "%VS110COMNTOOLS%vsvars32.bat" x86_amd64
Run Code Online (Sandbox Code Playgroud)

但这还不够。PATH,LIBLIBPATH环境变量之间存在细微差别:其中的路径仅指向 x32 路径,例如指向

...;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN;...
Run Code Online (Sandbox Code Playgroud)

代替

...;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\x86_amd64;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN;...
Run Code Online (Sandbox Code Playgroud)

事实上,我正在尝试使用来自 CMake 的 Ninja 生成器进行构建,其中构建配置由提示环境确定。

cmake visual-studio jenkins ninja jenkins-pipeline

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

错误:导出序号太大:104116

我从源代码构建 Inkscape:

$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ..
$ ninja install
Run Code Online (Sandbox Code Playgroud)

它返回错误如下。

[1002/1006] Building CXX object src/CMakeFiles/inkscape_base.dir/verbs.cpp.obj
[1003/1006] Linking CXX shared library bin\libinkscape_base.dll
FAILED: bin/libinkscape_base.dll src/libinkscape_base.dll.a
cmd.exe /C "cd . && C:\msys64\mingw64\bin\g++.exe  -fopenmp -m64 -mms-bitfields -mthreads -mwindows -pthread -std=c++11 -g   -shared -o bin\libinkscape_base.dll -Wl,--out-implib,src\libinkscape_base.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles/inkscape_base.rsp  && cd ."
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: Error: export ordinal too large: 104116
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Run Code Online (Sandbox Code Playgroud)

什么会导致此错误以及如何解决?

注意:我可以成功构建 Inkscape,无需-DCMAKE_BUILD_TYPE=Debug.

c++ mingw cmake inkscape ninja

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

在 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
查看次数

如何解除 Ninja 对并行链接作业的限制?

我在 Debian 9 上使用 Ninja 1.8.2 来使用 llvm-5.0 构建 llvm-6.0。

当我检查系统的CPU使用率时,我发现CPU并没有100%使用,而且还有足够的内存。

检查 cmake 的输出后,我发现它将并行链接作业限制为 2 个,因为在我的机器上运行的 llvm 也是并行运行的。

我想尝试解除该限制是否会使我的构建速度更快,但几乎没有任何相关文档。

编辑:

我检查了构建目录中的rules.ninja 文件的内容,并发现了这些:

#############################################
# Pools defined by global property JOB_POOLS

pool link_job_pool
  depth = 2
Run Code Online (Sandbox Code Playgroud)

我还检查了 build.ninja 的内容并发现了这一点:

build lib/libLLVMDemangle.a: CXX_STATIC_LIBRARY_LINKER__LLVMDemangle lib/Demangle/CMakeFiles/LLVMDemangle.dir/ItaniumDemangle.cpp.o
  LANGUAGE_COMPILE_FLAGS = -Ofast -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -std=c++1y -Wal       l -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -W       non-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fcolor-diagnostics -ffunction-sections -fdata-sections -flto=thin -O3 -D       NDEBUG
  OBJECT_DIR = lib/Demangle/CMakeFiles/LLVMDemangle.dir
  POST_BUILD = :
  PRE_LINK = : …
Run Code Online (Sandbox Code Playgroud)

ninja

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

将“-j”参数从 gradle 传递给 ninja

-j在使用 gradle 构建 Android 应用程序时,我需要将参数传递给 ninja。(在 Windows 上)

为什么我需要这个?- 我们有巨大的统一 C++ 文件,需要大量内存才能编译。目前我没有足够的内存(约 10GB 可用)来在 8 个内核上并行编译它们。因此,当内存耗尽时,clang 会失败。

我看到 gradlecmake使用--buildkey运行,所以我试图在-j1那里添加我的arg。但似乎arguments字段仅用于 cmake 生成,因为它不会影响在构建阶段传递给 cmake 的命令行。

externalNativeBuild {
    cmake {
        cFlags "..."
        cppFlags "..."
        arguments "... -- -j1"
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在看到的唯一方法是ninja用一些包装器替换-j从那里传递。但这是我想使用的最后一个选项。感谢有关如何实现这种有效方式的任何想法。

cmake gradle android-studio ninja

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

如何使用自定义 CMake 版本执行 Visual Studio 2019 Ninja 构建?

我正在尝试从 IDE 在 Visual Studio 2019 上使用 Ninja 构建项目。我想使用与 VS 2019 发行版中集成的版本不同的 CMake 版本。我已经cmakeExecutable在我的CMakeSettings.json文件中设置了变量指向我的 CMake 系统安装,并且使用 Visual Studio 生成器构建工作正常。但是,如果我使用 Ninja 作为生成器,Visual Studio 将使用 VS 集成版本的 CMake 回退。有没有办法使用 Ninja 和来自 IDE 的自定义 CMake 版本进行构建?

cmake ninja visual-studio-2019

6
推荐指数
0
解决办法
913
查看次数

错误:无法检测 Ninja v1.8.2 或更高版本 - Meson

当我尝试运行 Meson 时,它抱怨找不到 Ninja v1.8.2 或更高版本。我跑了这个:

meson build-debug
Run Code Online (Sandbox Code Playgroud)

这导致了上面解释的错误。我有最新的工具:

忍者 v1.10.2

介子0.61.2

适用于 VS 2022 的 x64 本机工具命令提示符

compiler-errors ninja meson-build

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

CMake MSBUILD:错误 MSB1009:项目文件不存在

我需要在 MSVC 2013和 MSVC 2019下构建基于 CMake 的项目。

通过使用 Ninja 生成器的 MSVC 2019,我使用以下命令成功构建了它:

cmake -S . -B build -GNinja "-DCMAKE_BUILD_TYPE:STRING=Release"
cmake --build build --target all
Run Code Online (Sandbox Code Playgroud)

在 MSVC 2013上我没有可用的 Ninja,所以我尝试了以下操作:

cmake -S . -B build -DCMAKE_BUILD_TYPE:STRING=Release
cmake --build build --target all
Run Code Online (Sandbox Code Playgroud)

无论如何,我收到以下错误并且没有构建任何内容:

MSBUILD : error MSB1009: Project file does not exist.
Switch: all.vcxproj
Run Code Online (Sandbox Code Playgroud)

知道如何在没有忍者的情况下建造它吗?(我无法安装它,因为我正在构建服务器上构建它。)

c++ msbuild cmake ninja

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

Flutter 错误:cmake 错误:调试新项目

我刚刚在 vscode 中启动一个新的 flutter 项目,当我想调试该项目时,出现错误:

  Could not find compiler set in environment variable CXX:

  clang++.

Call Stack (most recent call first):
  CMakeLists.txt:3 (project)


CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
Exception: Unable to generate build files
Run Code Online (Sandbox Code Playgroud)

我在互联网上搜索,发现我的“cmake”包没有 g++.exe ,因此通过以下命令行手动安装它:

sudo apt-get install g++

但它不起作用,我该如何解决它?

cmake dart ninja flutter flutter-debug

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

Ninja 构建系统 + gcc/clang 不输出诊断颜色

当使用或编译器ninja调用C 或 C++(因此是两个标签)项目时,输出不会使用 ANSI 颜色。clanggcc

例如:

error应该是红色的,但不是。 warning应该是黄色/橙色,但不是。

一切都是同样的颜色,真的很难说清楚是怎么回事!

c c++ ninja

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