Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yocto 在bitbake文件中使用外部变量的If-else语句_Yocto_Bitbake_Openembedded_Texas Instruments - Fatal编程技术网

Yocto 在bitbake文件中使用外部变量的If-else语句

Yocto 在bitbake文件中使用外部变量的If-else语句,yocto,bitbake,openembedded,texas-instruments,Yocto,Bitbake,Openembedded,Texas Instruments,嗨,在我的bitbake文件下,我想停止执行某些任务,并希望每次都执行编译函数。为此,我做了以下更改 do_compile[nostamp] = "1" do_clean[noexec] = "1" do_cleanall[noexec] = "1" do_cleansstate[noexec] = "1" do_fetch[noexec] = "1" do_patch[noexec] = "1" do_unpack[noexec] = "1" 而且效果非常好。我能够停止执行诸如c

嗨,在我的bitbake文件下,我想停止执行某些任务,并希望每次都执行编译函数。为此,我做了以下更改

do_compile[nostamp] = "1" 
do_clean[noexec] = "1" 
do_cleanall[noexec] = "1" 
do_cleansstate[noexec] = "1" 
do_fetch[noexec] = "1" 
do_patch[noexec] = "1" 
do_unpack[noexec] = "1"
而且效果非常好。我能够停止执行诸如clean、cleanall、cleansstate、fetch、patch和unpack之类的任务。此外,我还能够确保每次都运行编译任务

不过,我想对这一点加以限制。我想确保只有当DEVMODE变量设置为1时,相关任务上的noexec和nostamp才适用Psuedo代码如下所示

if DEVMODE == 1 then
    do_compile[nostamp] = "1" 
    do_clean[noexec] = "1" 
    do_cleanall[noexec] = "1" 
    do_cleansstate[noexec] = "1" 
    do_fetch[noexec] = "1" 
    do_patch[noexec] = "1" 
    do_unpack[noexec] = "1"
endif
如何在bitbake文件中实现同样的效果?我已经尝试和链接,但我不能手工制作一个工作条件

注意:我可以使用BB_ENV_EXTRAWHITE,但我无法为bitbake文件编码工作条件。

使用可以为您工作

python () {
    #add "export DEVMODE=1" under conf/setenv
    #add DEVMODE under BB_ENV_EXTRAWHITE variable under conf/setenv

    if d.getVar("DEVMODE", True) == "1":
        d.setVarFlag("do_compile", 'nostamp', "1")
}
或直接设置:

do_compile[nostamp] = "${@'1' if d.getVar('DEVMODE') == '1' else '0'}"

我知道,
如果
不是bitbake语法的一部分,而是bitbake函数的一部分。你可以用一个条件语句创建一个函数。如果不是,那么我如何实现这样的功能呢?通常你有两个bb文件。。。一个用于发布版本,另一个用于调试版本。我已经编辑了答案,编辑的代码对我有效,请接受编辑,以便我可以接受它作为答案。@SunnyShukla,d.getVar()现在不需要解释选项“True”,因为它是默认值。