标签: build

makefile:如果变量为空,则在单个 make 目标上失败

我是构建 Makefile 的新手,并且正在尝试确定如果变量为空,构建目标将如何失败。我希望能够将变量作为环境变量或 make 参数传入。

假设我有一个这样的 makefile:

VER ?=

step0:
    echo "step0 should work"

step1: 
    echo "step1 should enforce variable"
    ifeq($(VER), "")
    $(error VER is not set)
    endif 
    echo "Success: Value of Ver ${VER}"

step2:
    echo "step2 should work"
Run Code Online (Sandbox Code Playgroud)

我希望能够运行以下测试用例:

VER="foo" make step1  
# should result in printing the "Success:" line
Run Code Online (Sandbox Code Playgroud)

或者

export VER=foo
make step1  
# should result in printing the "Success:" line
Run Code Online (Sandbox Code Playgroud)

或者

make step1 VER=foo  
# should result in printing the "Success:" line
Run Code Online (Sandbox Code Playgroud)

或者

make step1  
# …
Run Code Online (Sandbox Code Playgroud)

bash scripting makefile build gnu-make

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

如何使用 lintr::lint() 获得非零退出状态以使构建失败

我试图通过lintr在编写 R 代码时使用该包来帮助我们的开发人员组获得类似的代码风格。为了自动化这一步,如果代码中有任何错误(错误的样式),我希望我们的构建失败。如果这很重要,我们将使用 Jenkins 作为我们的构建管道。

我知道我们可以使用该expect_lint_free功能,但我们不制作包,只制作脚本文件。该lint函数的输出看起来不错,但即使 linter 返回改进建议,构建也会通过。我如何获得非零退出状态,这将使 Jenkins 构建失败?

在命令行上运行的(简化的)代码

Rscript -e "lintr::lint('my_script.R')"
Run Code Online (Sandbox Code Playgroud)

没有返回错误,但有很多建议。

注意:我目前对“创建 R 包”解决方案不感兴趣。

r build lintr

0
推荐指数
2
解决办法
172
查看次数

修改 Android 源码的核心 java 库以用于应用程序

我想对 Android 源代码进行一些修改以满足我的要求。这是要求:

我想通过向类中再添加一个公共int字段来索引 Android 应用程序中的所有对象java.lang.Object。因此,所有类都可以继承新添加的字段,因为它们都是Object该类的子类。

到目前为止我所做的是修改文件夹java.lang.Object下的类<Android_source>/libcore/libart/src/main/java/java/lang并重新编译源代码。

我想问一下我做的对不对。我的 Android 应用程序能否识别此更改(例如,String对象是否可以访问新添加的字段)?

编辑

经过大约 3 周的尝试和错误,我终于得到了完整的答案。我想,如果别人想修改的Android源的核心Java库(例如,修改与他人分享这方面的经验Object.javaString.java等)。同样,正如迈克尔所提到的,请注意此类修改可能仅适用于研究或测试目的。

成功修改的关键挑战(这里的“成功”意味着修改后的 Android 源代码可以在模拟器或真实设备上构建和运行而没有任何问题)是核心 java 库中的一些类有它们的 C++ 镜像(位于<Android_source>/art/runtime/mirrors/)。在修改这些 java 类时,您也应该对其 C++ 镜像进行相同的修改。否则,您可能会在构建过程中失败,因为您需要通过大量检查。由于我只向 中添加了一个新字段,因此Object.java我将在下面列出我遇到的一些检查(或要求):

1.对象实例的大小=其C++镜像的大小。例如,如果我将一个long字段添加到 中Object.java,我还应该uint64_t向它的 C++ 镜像添加一个字段以使其大小相等。

2. 尝试使对象实例的大小为 2 的幂(例如,2, 4, 8, 16, ...)。比如原来的大小Object.java是8,所以我加了一个long字段,把大小增加到16。如果我加了一个int字段,大小变成了12,很多检查都会失败。我不知道确切的原因,但我想这与memory 对齐有关

3.尽量将原始类型字段放在非原始类型字段之后,原始类型字段应按大小排序。这意味着您应该将引用类型字段放在前面,然后是 8 字节原始类型字段,然后是 4 字节原始类型字段,然后是 2 字节原始类型字段,然后是 1 字节原始类型- 类型字段。同样,我猜原因是内存对齐 …

java android build android-build android-source

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

颤振构建错误 - 合并 dex 档案

我今天升级了颤振(颤振更新)和包(颤振包更新),因为我的应用程序没有构建。

这是我得到的输出(在尝试将 sdk 从 27 更改为 28 并清理之后)

我会很感激你的帮助。

Launching lib\main.dart on in debug mode...
Run Code Online (Sandbox Code Playgroud)

正在初始化 gradle... 解决依赖项... Gradle 任务 'assembleDebug'... ******************************** ************************* 警告:如果此版本的 device_info 或其依赖项与 AndroidX 不兼容,则会破坏您的 Android 构建。有关该问题以及如何修复它的更多信息,请参见 h。对于所有 Android 构建失败,都会打印此警告。错误的真正根本原因可能是无关的。****************************************************** ******* D8:程序类型已经存在:android.support.v4.app.INotificationSideChannel$Stub$Proxy

FAILURE:构建失败,出现异常。

  • 出了什么问题:任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。

    com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\271.jar, C :\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\272.jar, C:\Users\X\Documents\Projects\git\XX\app\build \app\intermediates\transforms\dexBuilder\debug\273.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\274.jar, C: \Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\275.jar, C:\Users\X\Documents\Projects\git\XX\app\build\ app\intermediates\transforms\dexBuilder\debug\276.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\277.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\278.jar, C:\Users\X\Documents\Projects\git\XX\app\build\ app\intermediates\transforms\dexBuilder\debug\279.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\280.jar, C:\ Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\281.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app \intermediates\transforms\dexBuilder\debug\282.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\283.jar, C:\Users \X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\284.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\中间件\转换\dexBuilder\debug\285.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\286.jar, C:\Users\X\Documents\Projects\git\XX\app\build\ app\intermediates\transforms\dexBuilder\debug\287.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\288.jar, C:\ Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\289.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app \intermediates\transforms\dexBuilder\debug\290.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\291.jar, C:\Users \X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\292.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\中间件\转换\dexBuilder\debug\293.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\294.jar, C:\Users\X\Documents\Projects\git\XX\app\build\ app\intermediates\transforms\dexBuilder\debug\295.jar, C:\Users\X\Documents\Projects\git\XX\app\build\app\intermediates\transforms\dexBuilder\debug\296.jar, …

error-handling android build dex flutter

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

Unity 构建错误

所以我制作了我的游戏并尝试构建它。我收到了一些对我来说毫无意义的错误。

这是错误:

UnityEditor.BuildPlayerWindow+BuildMethodException: UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions 选项) [0x00234] 中的 2 个错误,位于 C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:191 at UnityMethodEditor.Call.BuildPlayer (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x0007f] 在 C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:97 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

UnityException:生成路径包含使用“创建 Visual Studio 解决方案”选项生成的项目,该选项与当前生成设置不兼容。考虑将您的项目构建到一个空目录中。UnityEditor.WindowsStandalone.WindowsDesktopStandalonePostProcessor.CheckSafeProjectOverwrite (UnityEditor.Modules.BuildPostProcessArgs args)(位于 C:/buildslave/unity/build/PlatformDependent/WinPlayer/Extensions/Managed/WindowsDesktopStandalonePostProcessor.cs:ProcessUnityorEditDesktops.Modules.BuildPostProcessArgs args) ) (在 C:/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:43) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

它应该正确构建和运行。它目前没有这样做。任何帮助将不胜感激。:D

c# build unity-game-engine

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

Flutter:系统找不到指定的路径

当我运行此命令时

D:\Flutter\project flutter\navagat>flutter build apk --release
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

该系统找不到指定的路径。

release build apk flutter

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

你能阻止构建未使用的静态对象吗?

当我链接一个包含静态对象的文件时,无论是否使用过该对象或者是否包含标头,都会运行该对象的构造函数。g++ 中有没有办法阻止这种行为的发生,或者是不链接文件的唯一答案?

foo.h

#include <iostream>

class Bar {
public:
    Bar(int inMemberInt) {
        std::cout << "In Bar constructor." << std::endl;
    }
};

class Foo {
public:
    static const Bar constVar;
};
Run Code Online (Sandbox Code Playgroud)

文件

#include "foo.h"

const Bar Foo::constVar(1);
Run Code Online (Sandbox Code Playgroud)

主程序

#include <iostream>

int main() {
    std::cout << "Hello." << std::endl; 

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

构建命令

g++ foo.h foo.cpp main.cpp -o main
Run Code Online (Sandbox Code Playgroud)

输出

In Bar constructor.
Hello.
Run Code Online (Sandbox Code Playgroud)

c++ linker static g++ build

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

Electron + Vue App 上未显示自定义字体

我正在使用Vue + Electron开发应用程序,但我遇到了使用自定义字体的问题。在 Web 模式下运行应用程序时,与自定义字体一起使用的图标显示正常。但是当我使用电子构建器构建应用程序时,图标/自定义字体没有加载。

我在 index.html head 标签中导入自定义字体,自定义字体位于 src/renderer/assets/fonts 文件夹中。

任何帮助谢谢

fonts build vue.js electron electron-builder

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

尝试对已绑定的 ID 0 使用 @BindView

Android Studio 构建失败:

Attempt to use @BindView for an already bound ID 0 on 'mConnectionMessage'


Fragment.java:53: error: Attempt to use @BindView for an already bound ID 0 on 'mConnectionMessage'. 
    ImageView mConnectionImage;
              ^
Run Code Online (Sandbox Code Playgroud)

这是导致问题的代码部分:

    @BindView(R2.id.display_discovery_state_icon)
    ImageView mConnectionImage;
Run Code Online (Sandbox Code Playgroud)

android build gradle android-studio build.gradle

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

BuildMethodException:[GoogleMobileAds] 尚未启用 Ad Manager 和 AdMob

BuildMethodException:[GoogleMobileAds] Ad Manager 和 AdMob 均未启用。ManifestProcessor.StopBuildWithMessage(System.String 消息)。

帮我统一制作新的android游戏...统一在Google admob中添加(横幅广告)我想构建这个游戏因为这个错误,我无法构建这个游戏..

build unity-game-engine admob

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