dynamic generate command line parameters for qt embedded application

Read the fucking source code below.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <linux/input.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#define DIR_PATH    "/dev/input"
#define NODE_PREFIX    "event"
int main(int argc,char **argv)
{
    DIR *tdir;
    struct dirent *tdirent;
    struct input_event tevent;
    unsigned int evbit;
    int fd;
    unsigned char event_node_name[32];
    int node_prefix_len=strlen(NODE_PREFIX);
    int ret;
    int valid_cnt=0;
    int event_type;
    //check input parameters.
    if(argc<2)
    {
        printf("usage:%s <0/1>\n",argv[0]);
        printf("<0>: scan mouse event nodes\n");
        printf("<1>: scan keyboard event nodes\n");
        return -1;
    }
    if(!strncmp(argv[1],"0",1))
    {
        event_type=EV_REL;
    }else if(!strncmp(argv[1],"1",1))
    {
        event_type=EV_KEY;
    }else{
        printf("error:invalid scan type!\n");
        return -1;
    }
    tdir=opendir(DIR_PATH);
    if(!tdir)
    {
        printf("open dir failed!\n");
        return -1;
    }
    while((tdirent=readdir(tdir))!=NULL)
    {
        if(!strncmp(tdirent->d_name,NODE_PREFIX,node_prefix_len))
        {
            sprintf(event_node_name,"%s/%s",DIR_PATH,tdirent->d_name);
            //printf("%s,",event_node_name);
            fd=open(event_node_name,O_RDONLY);
            if(fd<0)
            {
                printf("open event node failed:%s\n",strerror(errno));
                continue;
            }
            ret=ioctl(fd,EVIOCGBIT(0,EV_MAX),&evbit);
            if(evbit&(0x1<<event_type))
            {
                printf("%s\n",event_node_name);
                valid_cnt++;
            }
            close(fd);
        }
    }
    closedir(tdir);
    return valid_cnt;
}

#!/bin/bash

#brief:to solve match correct event node when EAVCapture starts.
#date:September 17,2015.
#author:zhangshaoyan,shell.albert@gmail.com

#qt's start command line parameters.
mouseplug=
kbdplug=
allplug="-platform linuxfb"

#scan /dev/input directory to get valid event that supports EV_REL.
./evtest.bin 0 > mouse_event.log
mouse_event_cnt=$?

#scan /dev/input diretory to get valid event that supports EV_KEY.
./evtest.bin 1 > kbd_event.log
kbd_event_cnt=$?

#generate the final one-line start parameter.
if [ $mouse_event_cnt -gt 0 ];then
    while read line
    do
        mouseplug="$mouseplug -plugin evdevmouse:$line"
    done < mouse_event.log
fi

if [ $kbd_event_cnt -gt 0 ];then
    while read line
    do
        kbdplug="$kbdplug -plugin evdevkeyboard:$line"
    done < kbd_event.log
fi

allplug="$allplug $mouseplug $kbdplug"
echo $allplug


在软件构建或发布过程中,出现 `generate release package failed: no specified product found` 错误通常表明构建系统未能识别或定位到需要打包的产品定义或配置。该错误可能出现在多种开发环境或构建工具中,例如基于 .NET 的项目、嵌入式系统构建框架,或企业级应用的打包工具。 以下是可能导致此错误的常见原因及对应的解决方法: ### 常见原因及解决方法 #### 1. **缺少产品定义文件或配置缺失** 构建系统通常依赖特定的配置文件(如 `.csproj`、`.json` 或 `.xml` 文件)来识别产品结构。若这些文件缺失、配置错误或路径不正确,系统将无法找到产品。 - **解决方法**: 检查项目目录结构,确认是否存在产品定义文件,并确保其内容正确无误。例如,在 .NET 项目中,确保 `.csproj` 文件中包含正确的 `<OutputType>` 和 `<TargetFramework>` 配置[^2]。 #### 2. **构建脚本或命令行参数配置错误** 如果使用命令行工具生成发布包(如 MSBuild、dotnet CLI 或自定义脚本),可能由于未正确指定项目文件或产品标识导致此错误。 - **解决方法**: 在执行构建命令时,明确指定项目文件路径。例如,在使用 `dotnet publish` 时应使用如下格式: ```bash dotnet publish YourProject.csproj -c Release -o ./publish ``` #### 3. **环境依赖未满足** 某些构建工具链依赖特定运行时或 SDK。例如,.NET 项目要求安装完整版本的 .NET SDK,而非仅客户端运行时[^2]。 - **解决方法**: 确保安装了与项目兼容的完整 SDK,而不是预发布版本或仅运行时版本。可通过命令 `dotnet --info` 检查当前环境配置。 #### 4. **多项目解决方案中未指定启动项目** 在包含多个项目的解决方案中,若未明确指定哪个项目应作为主项目,构建系统可能无法确定打包目标。 - **解决方法**: 在 Visual Studio 中右键点击所需项目并选择“设为启动项目”,或在命令行中使用 `/p:DeployOnBuild=true /p:PublishProfile=YourProfile` 参数指定目标项目。 #### 5. **自定义构建流程配置错误** 若使用自定义构建工具链(如使用 `DECOMP.EXE` 和 `COMPOSER.EXE` 处理库文件),可能由于中间文件未正确生成或路径未配置导致产品信息丢失[^1]。 - **解决方法**: 确保所有中间步骤(如反编译、重新编译)正确执行,且输出路径与构建脚本一致。例如: ```cmd DECOMP.EXE your_library.lib COMPOSER.EXE -build your_library_source.asc ``` ### 建议的排查步骤 - 查看完整的构建日志,定位错误发生前的上下文信息。 - 确保所有依赖项已正确安装并配置。 - 在构建命令中启用详细输出(如 `dotnet build -v d` 或 `msbuild /verbosity:detailed`),以获取更详细的错误线索。 - 如果使用 CI/CD 工具(如 Jenkins、Azure DevOps),检查构建代理的环境配置是否与本地开发环境一致。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值