杂项——工作中问题记录

目录

  • opencv使用技巧
  • ubuntu使用相关
  • 编译Qt
  • 编译tensorflow 1.8.0
  • windows下制作安装包
  • Windows下获取文件夹下文件名脚本
  • Ubuntu下安装opencv、pcl、vtk(2020.09.15)
    • pcl安装的是1.8.1,依赖vtk 6.3且是qt的编译版本
  • Qt Creator C++代码跳转十分缓慢
  • android studio使用问题记录
  • android中使用C++、java读取文件都需要开启相应权限
  • 编辑C++模板


opencv使用技巧

int stype = src.type(), sdepth = CV_MAT_DEPTH(stype), cn = CV_MAT_CN(stype);
从type中分离深度和通道数,type为CV_8UC1等
CV_MAKETYPE(ddepth, cn) 用深度和通道数组成type

ubuntu使用相关

# sudo apt-cache search 库
   sudo apt-get install 具体名字的库
   
# anaconda操作手册
打开GUI面板,anaconda-navigator
安装anaconda后,使用conda init bash激活
conda info
conda install 
conda create -n python36 python=3.6

pip 换源
在.pip/pip.conf中添加
[global]
index-url = https://mirrors.aliyun.com/pypi/simple
pip search package

启动spyder: spyder
启动jupyter-notebook: jupyter-notebook

编译Qt

  • 有时编译一些别人写的软件,用到的第三方库为很老的版本,就比如这里用到的Qt 4.8.7。要将其编译成vs 2015对应的调用库,此时就很有必要。
  1. 下载下来源码,打补丁,configure,编译
使用vs对应的命令行工具,这里使用x64
configure.exe -prefix C:\Qt\Qt4.8.7 -debug-and-release -no-qt3support -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-libtiff -no-libmng -no-dbus -no-nis -webkit -platform win32-msvc2015
configure.exe -prefix C:\Qt\Qt4.8.7 -debug-and-release -platform win32-msvc2015
configure.exe -prefix C:\Qt\Qt4.8.7\4.8.7\msvc2015_64 -debug-and-release -nomake demos -nomake examples -platform win32-msvc2015
  1. nmake工具的使用
nmake confclean
nmake install
  1. windows下cmake配置nmake版本进行编译
cmake -G "NMake Makefiles" path
  1. 动态链接库debug和release版本名字一定要有区别,不然错误链接会出现各种莫名其妙的错误。
    CMake配置时CMAKE_DEBUG_POSTFIX “d”

  2. 软件库版本号
    msvc2015_64或者msvc2015

  3. 依赖库dll提取
    1、dumpbin.exe /dependents TopVision3D.exe

  4. 在Qt Creator中集成自定义控件:
    将生成的release版本的控件dll放入QtCreator\bin\plugins\designer目录中,要注意creator的编译版本,不然会链接不上。


编译tensorflow 1.8.0

  1. 在CMakeLists.txt中添加8-9行的内容
if (tensorflow_OPTIMIZE_FOR_NATIVE_ARCH)
  include(CheckCXXCompilerFlag)
  CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_OPT_ARCH_NATIVE_SUPPORTED)
  if (COMPILER_OPT_ARCH_NATIVE_SUPPORTED)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
  else()
    CHECK_CXX_COMPILER_FLAG("/arch:AVX" COMPILER_OPT_ARCH_AVX_SUPPORTED)
    if(COMPILER_OPT_ARCH_AVX_SUPPORTED)
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX")
    endif()
  endif()
endif()

# 添加的就是以下部分:
 else()
CHECK_CXX_COMPILER_FLAG("/arch:AVX" COMPILER_OPT_ARCH_AVX_SUPPORTED)
   if(COMPILER_OPT_ARCH_AVX_SUPPORTED)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX")
   endif()
  1. 编译时要用管理员权限打开vs编译,不然报错
  2. 设置并行编译数为4
  3. 已经下载的文件避免重复下载:
    直接下压缩包的,修改download-xx.cmake中的
    if(EXISTS 处的脚本
    git clone的源码使用xx-gitclone-lastrun.txt,更新一下时间戳
    另外,可在xx-gitclone.cmake中修改下载地址

windows下制作安装包

  1. 提取软件依赖dll,可用网上找到的3个bat脚本。不过该脚本利用dumpbin工具只能探测跟软件直接相关的dll,dll再依赖的dll就不探测了,所以使用有限。
    1-Qt软件dll相关依赖提取:用Qt命令行工具windeployqt *.exe,即可获得Qt依赖库。其它的额外库,依次加入即可。

    2-使用procexp.exe可以查看*.exe所有的依赖项dll,根据相关信息手动将dll添加到bin目录。

    3-目录 XXX
    |——bin
    |——Configs
    |——…

  2. 按软件发布目录,利用setup factory工具制作安装包。


Windows下获取文件夹下文件名脚本

DIR *.*  /B >file_name.txt

Ubuntu下安装opencv、pcl、vtk(2020.09.15)

pcl安装的是1.8.1,依赖vtk 6.3且是qt的编译版本

sudo apt-get install libopencv-dev libopencv-contrib-dev
sudo apt-get install libvtk6-dev libvtk6-qt-dev
sudo apt-get install libpcl-dev

Qt Creator C++代码跳转十分缓慢

  • 该问题一般是由于clang插件引起的,将clang插件关闭使用就OK了。

android studio使用问题记录

sudo chown <你系统当前的登陆用户名> -R /dev/kvm 更改权限

android中使用C++、java读取文件都需要开启相应权限

在AndroidManifest.xml添加

<!-- SD卡读写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAG" />
  • android API > 29需要开启新版本使用旧API访问外部存储器的支持
	<application
        ...
        android:requestLegacyExternalStorage="true">		<!-- 添加此行 -->
    </application>

注意:程序编译好后在手机上运行时需要在手机设置中开启读写权限,这是很关键的一步。

编辑C++模板

C++模板都要放在头文件中,不能将实现放到cpp文件,不然编译报错

  1. 导出类数据成员中如果使用了模板类,会有以下错误提示

warning C4251: XXX 需要有 dll 接口由 XXX 的客户端使用

你可能感兴趣的:(日常记录,工程配置,android,studio,c++,linux,ndk)