我是构建 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) 我试图通过lintr在编写 R 代码时使用该包来帮助我们的开发人员组获得类似的代码风格。为了自动化这一步,如果代码中有任何错误(错误的样式),我希望我们的构建失败。如果这很重要,我们将使用 Jenkins 作为我们的构建管道。
我知道我们可以使用该expect_lint_free功能,但我们不制作包,只制作脚本文件。该lint函数的输出看起来不错,但即使 linter 返回改进建议,构建也会通过。我如何获得非零退出状态,这将使 Jenkins 构建失败?
在命令行上运行的(简化的)代码
Rscript -e "lintr::lint('my_script.R')"
Run Code Online (Sandbox Code Playgroud)
没有返回错误,但有很多建议。
注意:我目前对“创建 R 包”解决方案不感兴趣。
我想对 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.java和String.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 字节原始类型- 类型字段。同样,我猜原因是内存对齐 …
我今天升级了颤振(颤振更新)和包(颤振包更新),因为我的应用程序没有构建。
这是我得到的输出(在尝试将 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, …
所以我制作了我的游戏并尝试构建它。我收到了一些对我来说毫无意义的错误。
这是错误:
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
当我运行此命令时
D:\Flutter\project flutter\navagat>flutter build apk --release
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
该系统找不到指定的路径。
当我链接一个包含静态对象的文件时,无论是否使用过该对象或者是否包含标头,都会运行该对象的构造函数。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) 我正在使用Vue + Electron开发应用程序,但我遇到了使用自定义字体的问题。在 Web 模式下运行应用程序时,与自定义字体一起使用的图标显示正常。但是当我使用电子构建器构建应用程序时,图标/自定义字体没有加载。
我在 index.html head 标签中导入自定义字体,自定义字体位于 src/renderer/assets/fonts 文件夹中。
任何帮助谢谢
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) BuildMethodException:[GoogleMobileAds] Ad Manager 和 AdMob 均未启用。ManifestProcessor.StopBuildWithMessage(System.String 消息)。
帮我统一制作新的android游戏...统一在Google admob中添加(横幅广告)我想构建这个游戏因为这个错误,我无法构建这个游戏..