xml version="1.0" encoding="utf-8" standalone="yes"12bet++博客-新手区http://www.fometaux.com/default.html?id=-5专注于12bet技术zh-cnFri, 05 Apr 2019 06:36:46 GMTFri, 05 Apr 2019 06:36:46 GMT6012bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/09/216292.html宋鹏宋鹏Sat, 09 Mar 2019 03:23:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/09/216292.htmlhttp://www.fometaux.com/hkingSP/comments/216292.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/09/216292.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216292.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216292.html搞懂编译过程 编译器都在干嘛
cl -I 包含需要的目录,其命令的结尾往往是一个.c或.cpp文件。
cl命令出错,一般是无法找到需要的头文件。

附录:cl -help
                         C/12bet COMPILER OPTIONS
                              -OPTIMIZATION-
/O1 minimize space                      /O2 maximize speed
/Ob<n> inline expansion (default n=0)   /Od disable optimizations (default)
/Og enable global optimization          /Oi[-] enable intrinsic functions
/Os favor code space                    /Ot favor code speed
/Ox maximum optimizations               /Oy[-] enable frame pointer omission 
/favor:<blend|ATOM> select processor to optimize for, one of:
    blend - a combination of optimizations for several different x86 processors
    ATOM - Intel(R) Atom(TM) processors 
                             -CODE GENERATION-
/Gw[-] separate global variables for linker
/GF enable read-only string pooling     /Gm[-] enable minimal rebuild
/Gy[-] separate functions for linker    /GS[-] enable security checks
/GR[-] enable 12bet RTTI                  /GX[-] enable 12bet EH (same as /EHsc)
/guard:cf[-] enable CFG (control flow guard)
/EHs enable 12bet EH (no SEH exceptions)  /EHa enable 12bet EH (w/ SEH exceptions)
/EHc extern "C" defaults to nothrow     
/EHr always generate noexcept runtime termination checks
/fp:<except[-]|fast|precise|strict> choose floating-point model:
    except[-] - consider floating-point exceptions when generating code
    fast - "fast" floating-point model; results are less predictable
    precise - "precise" floating-point model; results are predictable
    strict - "strict" floating-point model (implies /fp:except)
/Qfast_transcendentals generate inline FP intrinsics even with /fp:except
/Qpar[-] enable parallel code generation
/Qpar-report:1 auto-parallelizer diagnostic; indicate parallelized loops
/Qpar-report:2 auto-parallelizer diagnostic; indicate loops not parallelized
/Qvec-report:1 auto-vectorizer diagnostic; indicate vectorized loops
/Qvec-report:2 auto-vectorizer diagnostic; indicate loops not vectorized
/GL[-] enable link-time code generation 
/volatile:<iso|ms> choose volatile model:
    iso - Acquire/release semantics not guaranteed on volatile accesses
    ms  - Acquire/release semantics guaranteed on volatile accesses
/GA optimize for Windows Application    /Ge force stack checking for all funcs
/Gs[num] control stack checking calls   /Gh enable _penter function call
/GH enable _pexit function call         /GT generate fiber-safe TLS accesses
/RTC1 Enable fast checks (/RTCsu)       /RTCc Convert to smaller type checks
/RTCs Stack Frame runtime checking      /RTCu Uninitialized local usage checks
/clr[:option] compile for common language runtime, where option is:
    pure - produce IL-only output file (no native executable code)
    safe - produce IL-only verifiable output file
    initialAppDomain - enable initial AppDomain behavior of Visual 12bet 2002
    noAssembly - do not produce an assembly
    nostdlib - ignore the default \clr directory
/Gd __cdecl calling convention          /Gr __fastcall calling convention
/Gz __stdcall calling convention        /GZ Enable stack checks (/RTCs)
/Gv __vectorcall calling convention     /QIfist[-] use FIST instead of ftol()
/hotpatch ensure function padding for hotpatchable images
/arch:<IA32|SSE|SSE2|AVX|AVX2> minimum CPU architecture requirements, one of:
   IA32 - use no enhanced instructions and use x87 for floating point
   SSE - enable use of instructions available with SSE-enabled CPUs
   SSE2 - (default) enable use of instructions available with SSE2-enabled CPUs
   AVX - enable use of instructions available with AVX-enabled CPUs
   AVX2 - enable use of instructions available with AVX2-enabled CPUs
/Qimprecise_fwaits generate FWAITs only on "try" boundaries, not inside "try"
/Qsafe_fp_loads generate safe FP loads  
                              -OUTPUT FILES-
/Fa[file] name assembly listing file    /FA[scu] configure assembly listing
/Fd[file] name .PDB file                /Fe<file> name executable file
/Fm[file] name map file                 /Fo<file> name object file
/Fp<file> name precompiled header file  /Fr[file] name source browser file
/FR[file] name extended .SBR file       /Fi[file] name preprocessed file
/Fd: <file> name .PDB file              /Fe: <file> name executable file
/Fm: <file> name map file               /Fo: <file> name object file
/Fp: <file> name .PCH file              /FR: <file> name extended .SBR file
/Fi: <file> name preprocessed file      
/doc[file] process XML documentation comments and optionally name the .xdc file
                              -PREPROCESSOR-
/AI<dir> add to assembly search path    /FU<file> forced using assembly/module 
/C don't strip comments                 /D<name>{=|#}<text> define macro
/E preprocess to stdout                 /EP preprocess to stdout, no #line
/P preprocess to file                   /Fx merge injected code to file
/FI<file> name forced include file      /U<name> remove predefined macro
/u remove all predefined macros         /I<dir> add to include search path
/X ignore "standard places"             
                                -LANGUAGE-
/Zi enable debugging information        /Z7 enable old-style debug info
/Zp[n] pack structs on n-byte boundary  /Za disable extensions
/Ze enable extensions (default)         /Zl omit default library name in .OBJ
/Zs syntax check only                   /vd{0|1|2} disable/enable vtordisp
/vm<x> type of pointers to members      
/Zc:arg1[,arg2] 12bet language conformance, where arguments can be:
  forScope[-]           enforce Standard 12bet for scoping rules
  wchar_t[-]            wchar_t is the native type, not a typedef
  auto[-]               enforce the new Standard 12bet meaning for auto
  trigraphs[-]          enable trigraphs (off by default)
  rvalueCast[-]         enforce Standard 12bet explicit type conversion rules
  strictStrings[-]      disable string-literal to [char|wchar_t]*
                        conversion (off by default)
  implicitNoexcept[-]   enable implicit noexcept on required functions
  threadSafeInit[-]     enable thread-safe local static initialization
  inline[-]             remove unreferenced function or data if it is
                        COMDAT or has internal linkage only (off by default)
  sizedDealloc[-]       enable 12bet14 global sized deallocation
                        functions (on by default)
  throwingNew[-]        assume operator new throws on failure (off by default)
  referenceBinding[-]   a temporary will not bind to an non-const
                        lvalue reference (off by default)
/ZH:SHA_256             use SHA256 for file checksum in debug info (experimental)
/Zo[-] generate richer debugging information for optimized code (on by default)
/ZW enable WinRT language extensions    
/constexpr:depth<N>     use <N> as the recursion depth limit
                        for constexpr (default: 512)
/constexpr:backtrace<N> show <N> constexpr evaluations
                        in diagnostics (default: 10)
/constexpr:steps<N>     terminate constexpr evaluation after
                        <N> steps (default: 100000)
/ZI enable Edit and Continue debug info 
/openmp enable OpenMP 2.0 language extensions
                              -MISCELLANEOUS-
@<file> options response file           /?, /help print this help message
/bigobj generate extended object format /c compile only, no link
/errorReport:option Report internal compiler errors to Microsoft
    none - do not send report                
    prompt - prompt to immediately send report
    queue - at next admin logon, prompt to send report (default)
    send - send report automatically         
/FC use full pathnames in diagnostics   /H<num> max external name length
/J default char type is unsigned        
/MP[n] use up to 'n' processes for compilation
/nologo suppress copyright message      
/sdl enable additional security features and warnings
/showIncludes show include file names   /Tc<source file> compile file as .c
/Tp<source file> compile file as .cpp   /TC compile all files as .c
/TP compile all files as .cpp           /V<string> set version string
/w disable all warnings                 /wd<n> disable warning n
/we<n> treat warning n as an error      /wo<n> issue warning n once
/w<l><n> set warning level 1-4 for n    /W<n> set warning level (default n=1)
/Wall enable all warnings               /WL enable one line diagnostics
/WX treat warnings as errors            /Yc[file] create .PCH file
/Yd put debug info in every .OBJ        /Yl[sym] inject .PCH ref for debug lib
/Yu[file] use .PCH file                 /Y- disable all PCH options
/Zm<n> max memory alloc (% of default)  /FS force to use MSPDBSRV.EXE
/await enable resumable functions extension
/Wv:xx[.yy[.zzzzz]] disable warnings introduced after version xx.yy.zzzzz
/source-charset:<iana-name>|.nnnn set source character set
/execution-charset:<iana-name>|.nnnn set execution character set
/utf-8 set source and execution character set to UTF-8
/validate-charset[-] validate UTF-8 files for only legal characters
                                -LINKING-
/LD Create .DLL                         /LDd Create .DLL debug library
/LN Create a .netmodule                 /F<num> set stack size
/link [linker options and libraries]    /MD link with MSVCRT.LIB
/MT link with LIBCMT.LIB                /MDd link with MSVCRTD.LIB debug lib
/MTd link with LIBCMTD.LIB debug lib    
                              -CODE ANALYSIS-
/analyze[-] Enable native analysis      /analyze:quiet[-] No warning to console
/analyze:log<name> Warnings to file     /analyze:autolog Log to *.pftlog
/analyze:autolog:ext<ext> Log to *.<ext>/analyze:autolog- No log file
/analyze:WX- Warnings not fatal         /analyze:stacksize<num> Max stack frame
/analyze:max_paths<num> Max paths       /analyze:only Analyze, no code gen


宋鹏 2019-03-09 11:23 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/08/216291.html宋鹏宋鹏Fri, 08 Mar 2019 06:30:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/08/216291.htmlhttp://www.fometaux.com/hkingSP/comments/216291.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/08/216291.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216291.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216291.html

《QT_VS2005_CE6.0_开发环境架设》
1、基础环境:
操作系统:Windows XP
编译器:(1)VS2005 VC环境 (2)VS2005 SP1
(SP1 必须有,以提供CE平台的支持,没有的话,Arm Emulator的程序编译不过,模拟器也报错“EmulatorStub.exe严重错误”)
QT版本:qt-everywhere-opensource-src-4.8.6.zip
CE SDK:ARM Emulator

2、安装步骤:
(1)把QT源码解压到E:\QT\4.8.6\CE6.0\Emulator
Tim:个人推荐根目录,不带任何下划线、空格等幺蛾子,防止出错。。
Tim:绝对不能带下划线
公司电脑上的目录,起名带个下划线"4.8.6_ArmEmulator",结果VS2005创建工程失败,说缺少平台支持。。
Tim:也最好位于C盘,我把家里电脑的编译版本,放到公司电脑的C盘,创建项目成功,原来的公司版本在E盘,会失败。。不知道是不是错觉。。
(2)进入“Visual Studio 2005 命令提示”
位置是“开始菜单->所有程序->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 命令提示”。。
然后切换到编译目录:E:\QT\4.8.6\CE6.0\Emulator
(3)执行以下命令:
configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005
①如果想节省时间,部分编译:
[-debug-and-release] 编译和链接两个版本的Qt
[-nomake examples]
[-nomake demos]
[-nomake docs]
[-no-multimedia]
[-no-phonon]
[-no-phonon-backend] 
[-no-media-backend]
[-no-audio-backend] 
[-no-openssl]
[-no-gtkstyle]
[-no-svg]
[-no-webkit]  是否编译Web相关的一些QT子库,加上这个可以省不少编译时间,就看你是否准备用这些库了。
[-no-javascript-jit] 
[-no-script]
[-no-scripttools] 
[-no-sql-sqlite]
[-no-declarative]
[-no-declarative-debug]
Tim:以上可选项均未试验。。
Tim:
又抄来一个编译WIN32 VS2005设置的:
configure -fast -platform win32-msvc2005  -nomake examples -nomake docs -nomake demos -no-webkit -no-phonon -no-phonon-backend -no-multimedia
Tim:
4.8.6版的,不管怎么编译,都会出错。。
①第一个错误,修改如下:
qclipboard_win.cpp 第306行:
把出错的CheckRemoteDebuggerPresent,通过版本判断的方式,不编译进来。。
#if defined(_MSC_VER) && _MSC_VER <= 1400
    return false;
#else
........................
    CheckRemoteDebuggerPresent(processHandle, &debugged);
#endif
②第二个错误:
继续 nmake 遇到第二个错误
     platform\DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
     platform\DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected end of file in macro expansion
     这个错误的原因是因为代码里面的非英文的引号造成的。
    原始的错误代码如下:
     return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
     大家注意 <selection> 单词前后的引号。就是它造成编译报错。修改成下面的代码
    return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
Tim:也就是将selection两侧的中文引号那里改成上文的样子,。。奇怪老外也用这种引号么。。
(4)configure之后设置环境变量:
①使用Arm Emulator:
set INCLUDE=C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;C:\Program Files\Windows CE Tools\wce600\ARM_Emulator\Include\Armv4i
set LIB=C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i;C:/Program Files/Windows CE Tools/wce600/ARM_Emulator/Lib/armv4i
set PATH=C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;%PATH%
②如果使用S2416的SDK:
set INCLUDE=C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;C:\Program Files\Windows CE Tools\wce600\SBC2416\Include\Armv4i
set LIB=C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i;C:/Program Files/Windows CE Tools/wce600/SBC2416/Lib/armv4i
set PATH=C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;%PATH%
执行:
nmake
Tim:我下载的源码4.8.6在configure之后,出现让直行:setcepaths.bat wince600standard-armv4i-msvc2005 && nmake的提示,我估计不用设置上述环境变量,也有可能可以成功编译,但不冒那个险,直接按照文章推荐的步骤来。。
Tim:我运行setcepaths.bat,结果没有那个SDK只有wincewm60standard-armv4i-msvc2005,而且那个BAT里面,只是运行了check sdk的动作。。所以结论是按照推荐文章指定SDK的路径,nmake应该就可以。。
Tim:用作者的方案,Nmake编译成功。。
(5)安装qt-vs-addin:
安装“qt-vs-addin-1.1.10.exe”。。
Tim:“qt-vs-addin-1.2.0-opensource.exe ,就开始不支持VS2005。。”无语。。
(6)修改SDK的名称:
编辑" C:\QT\CE6.0\4.8.6\mkspecs\wince60standard-armv4i-msvc2005\qmake.conf "。。
将里面的
CE_SDK  = STANDARDSDK_600
变更为
CE_SDK  = ARM_Emulator
Tim:因为原始编译的SDK环境,它名称叫做"wince600standard-armv4i-msvc2005",Arm Emulator的库跟这个环境也是一样的,但是名称不一样,Qt插件会报错。。
(7)包含环境变量:
①Arm_Emulator的话:
在VS2005 -> Tool -> Options -> V12bet Directories -> Arm_Emulator里面:
Include增加:" C:\QT\4.8.6\CE6.0\Emulator\include "。。
Library增加:" C:\QT\4.8.6\CE6.0\Emulator\lib " 。。
Tim:我一开始就没包含,结果编译别人的代码,报错没有" QtSql "。。
②WIN32编译的话:
在VS2005 -> Tool -> Options -> V12bet Directories -> Win32里面:
Include增加:" C:\QT\4.8.6\WIN32\include "。。
Library增加:" C:\QT\4.8.6\WIN32\lib " 。。
Tim:
为了让Visual Assist更好的识别QT的函数名、类名,最好在VS2005里面多添加一些目录如:
C:\QT\4.8.6\WIN32\src
C:\QT\4.8.6\WIN32\include\Qt
C:\QT\4.8.6\WIN32\include\QtCore
C:\QT\4.8.6\WIN32\include\QtGui
(8)开启Arm Emulator:
Tool -> Connect to Device -> Arm Emulator Device。。
(9)新建一个QT工程,编译、运行:
开启VS2005 -> File -> New -> Project -> Qt4 Projects -> Qt Window CE Application -> 都选默认设置,然后编译、部署、执行,最后成功在Arm Emulator里面弹出个对话框来(OK)。。
Tim:看到部署的时候,用了VS2005的库(msvcr80d.dll),还有QT的两三个库(QtCored4.dll、QtGuid4.dll什么的)。。
(10)编辑*.ui文件,设计界面:
安装" qt-creator-opensource-windows-x86-3.3.0.exe ",才能打开" *.ui "文件,从而变更界面。。
Tim:看了下.ui文件其实是一个xml结构的文档。。
Tim:
" qt-creator-opensource-windows-x86-3.0.0.exe " Based on Qt5.2.0 ( MSVC2010,32 bit )。。
" qt-creator-opensource-windows-x86-3.3.0.exe " Based on Qt5.4.0 ( MSVC2010,32 bit )。。。。









宋鹏 2019-03-08 14:30 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/08/216289.html宋鹏宋鹏Fri, 08 Mar 2019 03:00:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/08/216289.htmlhttp://www.fometaux.com/hkingSP/comments/216289.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/08/216289.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216289.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216289.html环境:Windows10 / vs2013 or vs2015(Qt5.10.1是以12bet11为基础,因此vs2008歇菜了)参考代码里的Readme:

1.安装:
安装了perl/python2.7/ruby 
安装了vs2015

2.环境变量
add C:\Perl\bin to PERL_HOME
add %PERL_HOME% to path
add C:\Python27 to PYTHON_HOME
add %PYTHON_HOME% to path
add C:\Ruby26\bin to RUBY_HOME
add %RUBY_HOME% to path
add C:\Qt\Qt5.10.1\5.10.1\msvc2015\bin to QT_LIB_HOME
add %QT_LIB_HOME% to path
add C:\Qt\Qt5.10.1\Tools\QtCreator\bin to QT_CREATOR_HOME
add %QT_CREATOR_HOME% to path
注意:像官方推荐的一样,这里最好用同一版本的binary安装的Qt比较安装。
注意:如果这里没有添加QT的路径,就会被推荐用nmake编译,否则被推荐用jom编译。
3.代码:
代码解压缩到C:\Qt\Qt5.10.1_src
于是Configure文件在:
C:\Qt\Qt5.10.1_src

qtbase文件夹在:
C:\Qt\Qt5.10.1_src\qtbase

4.修改配置从MD到MT(动态链接改为静态链接):
修改文件:
C:\Qt\Qt5.10.1_src\qtbase\mkspecs\common\msvc-desktop.conf
修改下面几行代码:
QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD
QMAKE_CFLAGS_DEBUG      = -Zi -MDd
改为:
QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
QMAKE_CFLAGS_DEBUG      = -Zi -MTd

修改文件:
C:\Qt\Qt5.10.1_src\qtbase\mkspecs\common\msvc-version.conf
在最前面加上:
QMAKE_MSC_VER = 1900
否则会报错:
msvc-version.conf loaded but qmake_msc_ver isn't set

运行C:\Qt\Qt5.10.1_src>configure.bat 确认配置
5.编译:
<license>选择-opensource
控制台选择:
开始 -> Visual Studio 2015 -> Developer Command Prompt for VS2015 

疯狂的缩减编译选择,可以用来尝试最小化编译,当然我失败了( comercial user 可以用qt的Congiguration tool 然而我并没有,有些以来无法zh)
configure -confirm-license -opensource -platform win32-msvc -static -debug-and-release -prefix "C:\Qt\Qt5.10.1_static"  -make libs -nomake tools -nomake examples -nomake tests -skip qt3d -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsvg -skip qttools -skip qttranslations -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns -no-feature-texthtmlparser -no-feature-textodfwriter -no-feature-concurrent -no-feature-effects -no-feature-sharedmemory -no-feature-systemsemaphore -no-feature-im -no-feature-process -no-feature-dom -no-feature-filesystemmodel -no-feature-filesystemwatcher -no-feature-graphicsview -no-feature-graphicseffect -no-feature-sizegrip -no-feature-calendarwidget -no-feature-printpreviewwidget -no-feature-keysequenceedit -no-feature-colordialog -no-feature-filedialog -no-feature-fontdialog -no-feature-printpreviewdialog -no-feature-progressdialog -no-feature-inputdialog -no-feature-errormessage -no-feature-wizard -no-feature-datawidgetmapper -no-feature-imageformat_bmp -no-feature-imageformat_ppm -no-feature-imageformat_xbm -no-feature-imageformat_png -no-feature-imageformat_jpeg -no-feature-image_heuristic_mask -no-feature-image_text -no-feature-colornames -no-feature-cups -no-feature-paint_debug -no-feature-freetype -no-feature-translation -no-feature-codecs -no-feature-big_codecs -no-feature-iconv -no-feature-ftp -no-feature-udpsocket -no-feature-networkproxy -no-feature-socks5 -no-feature-networkdiskcache -no-feature-bearermanagement -no-feature-completer -no-feature-fscompleter -no-feature-desktopservices -no-feature-mimetype -no-feature-systemtrayicon -no-feature-undocommand -no-feature-undostack -no-feature-undogroup -no-feature-undoview -no-feature-statemachine -no-feature-gestures -no-feature-dbus -no-opengl 

成功的组合1(想编译哪个 就去掉哪个skip):
configure -confirm-license -opensource -platform win32-msvc -static -debug-and-release -prefix "C:\Qt\Qt5.10.1_mt_static" -make libs -nomake tools -nomake examples -nomake tests -skip qt3d -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsvg -skip qttools -skip qttranslations -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns -no-opengl 
尝试2:
configure -confirm-license -opensource -platform win32-msvc -static -debug-and-release -prefix "C:\Qt\Qt5.10.1_mt_static" -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -nomake tools -nomake examples -nomake tests -skip qtandroidextras -skip qtgamepad -skip qtmacextras -skip qttools -skip qtwinextras -skip qtx11extras  -no-openssl 
Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.
结果:
Static builds of QtWebEngine aren't supported.
"Some of the required modules (android|ios|winrt|qtHaveModule(webengine)) are not available."
skip webengine 继续测试:
configure -confirm-license -opensource -platform win32-msvc -static -debug-and-release -prefix "C:\Qt\Qt5.10.1_mt_static" -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -nomake tools -nomake examples -nomake tests -skip qtandroidextras -skip qtgamepad -skip qtmacextras -skip qttools -skip qtwebengine -skip qtwinextras -skip qtx11extras  -no-openssl 
结果:
成功

成功的组合2:
configure -confirm-license -opensource -platform win32-msvc -static -debug-and-release -prefix "C:\Qt\Qt5.10.1_mt_static" -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -nomake tools -nomake examples -nomake tests -skip qtandroidextras -skip qtgamepad -skip qtmacextras -skip qttools -skip qtwebengine -skip qtwinextras -skip qtx11extras  -no-openssl 
成功的组合1只是在单独编译qtbase时有用,于是以后采用的成功的组合2,总结命令为:
cd C:\Qt\Qt5.10.1_src
configure -confirm-license -opensource -platform win32-msvc -static -debug-and-release -prefix "C:\Qt\Qt5.10.1_mt_static" -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -nomake tools -nomake examples -nomake tests -skip qtandroidextras -skip qtgamepad -skip qtmacextras -skip qttools -skip qtwebengine -skip qtwinextras -skip qtx11extras  -no-openssl 
jom -j2
jom install

plus1:
WARNING: Using OpenGL ES 2.0 on Windows without ANGLE.
The build will most likely fail.
Specify -opengl desktop to use regular OpenGL.

plus2:
-skip qtwebengine , 都是Linux only
Webengine options:
  -webengine-alsa ................ Enable ALSA support [auto] (Linux only)
  -webengine-pulseaudio .......... Enable PulseAudio support [auto]
                                   (Linux only)
  -webengine-embedded-build ...... Enable Linux embedded build [auto]
                                   (Linux only)
  -webengine-icu ................. Use system ICU libraries [system/qt]
                                   (Linux only)

plus3:
Static builds of QtWebEngine aren't supported.

环境:Ubuntu 18.10/linux g++


1.安装:

安装了perl/python/ruby ( Linux 中 python2.x 的名字是python python3.x的名字是python3 )
统一安装:

sudo apt-get install build-essential libpcap0.8-dev libx11-dev libfreetype6-dev libavahi-gobject-dev libsm-dev libxrender-dev perl python ruby


2.环境变量:
linux的环境变量 只要不是特殊安装的,应该都被包含在内了

3.代码:
同上

4.动态链接改为静态链接:
linux没有md/mt,编译都时候 直接-static应该就可以。

5.编译:
尝试的组合1:
./configure -confirm-license -opensource -static -debug-and-release -prefix "/home/peng/Share/Qt5.10.1_static" -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -qt-xcb -opengl desktop -nomake tools -nomake examples -nomake tests -skip qtandroidextras -skip qtgamepad -skip qtmacextras -skip qttools -skip qtwebengine -skip qtwinextras -no-openssl 
编译出错:
qfilesystemengine_unix.cpp:101:12: error: ‘int renameat2(int, const char*, int, const char*, unsigned int)’ was declared ‘extern’ and later ‘static’ [-fpermissive]
bug fix:
据说要安装glibc2.28来解决。。

参考文献:
https://retifrav.github.io/blog/2018/02/17/build-qt-statically/
https://blog.csdn.net/u012822903/article/details/62058287



宋鹏 2019-03-08 11:00 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/05/216287.html宋鹏宋鹏Tue, 05 Mar 2019 01:09:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/05/216287.htmlhttp://www.fometaux.com/hkingSP/comments/216287.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/05/216287.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216287.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216287.html查看日志(本地commit记录):
git log
result:
commit f46a2277acf6b1604f3268fcd3652682f23347bc (HEAD -> master)
Author: songpeng <song.peng@bizerba.com>
Date:   Mon Mar 4 17:07:09 2019 +0800
查看日志中的某次提交:
git show f46a2277acf6b1604f3268fcd3652682f23347bc 


查看本地代码修改情况
已修改,未add的变更:
git diff
已add,未commit的变更:
git diff --cached
上面两条合并:
git diff HEAD

变更日志内容(comment):
首先显示最近3次提交的commit:
git rebase -i HEAD~3
运行后显示如下(我是在windows里面安装了vim,内容会显示在vim里,不知道没安装vim会如何显示):
pick 41b65c0 recursive_search_and_link_libraries
pick 0de33bd success_built_with_vs2013lib_on_creator
pick 7ed1e94 success to built with vs2013lib and run on vs2013 ide
移动光标到想要修改commit的所在行,将pick改成reword,然后保存
然后刷新的界面内类似会出现你想修改的comment,将之修改保存。
然后运行:
git push --force,就会重新传到服务器,更新你要修改的comment.




宋鹏 2019-03-05 09:09 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/04/216286.html宋鹏宋鹏Mon, 04 Mar 2019 08:26:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/04/216286.htmlhttp://www.fometaux.com/hkingSP/comments/216286.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/04/216286.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216286.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216286.htmladd:
git add *

undo add:
You can undo git add before commit with

git reset <file> 

which will remove it from the current index (the "about to be committed" list) without changing anything else.

You can use

git reset

add brach:
git branch rikSkinLoader

view branch:
git branch -a

switch branch:
git checkout BranchName

delete branch:
git branch -d

push branch:
git push origin branchname

pull:
git pull origin <remote_branch>:<local_branch>
git pull origin master:master



查看远端变更/后续操作:
git remote update

 

First use git remote update, to bring your remote refs up to date. Then you can do one of several things, such as:


git status -uno 
git status -uno will tell you whether the branch you are tracking is ahead, behind or has diverged. If it says nothing, the local and remote are the same.
git show-branch *master
git show-branch *master will show you the commits in all of the branches whose names end in 'master' (eg master and origin/master).


宋鹏 2019-03-04 16:26 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/03/216280.html宋鹏宋鹏Sun, 03 Mar 2019 03:24:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/03/216280.htmlhttp://www.fometaux.com/hkingSP/comments/216280.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/03/216280.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216280.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216280.html阅读全文

宋鹏 2019-03-03 11:24 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/03/216279.html宋鹏宋鹏Sun, 03 Mar 2019 02:54:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/03/216279.htmlhttp://www.fometaux.com/hkingSP/comments/216279.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/03/216279.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216279.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216279.html系统位置:
/etc/vim/vimrc

用户位置(默认无):
~/.vimrc

Vim 配置颜色主题:
https://vimcolors.com/

Vim 配置下载的theme:
到上面的网站下载sometheme.vim文件
放到 ~/.vim/colors下面
.vimrc中加入:color sometheme
.vimrc中加入:syntax on 

.vimrc内容:
" 显示行号
 set nu
" 缩进空格数
set tabstop=4
" 颜色主题
color railscasts
" 颜色语法生效
syntax on
" 根据文档类型,自动安排缩进,比如对待.c文件和对待makefile会有不同的缩进
filetype indent on
" 文件编码(without bom):
set nobomb
" 内部编码
set encoding=utf-8
" 文件编码utf-8
set fileencoding=utf-8
" 编码列表
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1



宋鹏 2019-03-03 10:54 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/03/216278.html宋鹏宋鹏Sun, 03 Mar 2019 01:55:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/03/216278.htmlhttp://www.fometaux.com/hkingSP/comments/216278.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/03/216278.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216278.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216278.htmlVim 文件编码查看:
:set fileencoding

Vim 文件编码修改:
:set fileencoding=utf-8

Vim 文件编码修改(without bom):
:set nobomb
:set fileencoding=utf-8  or :wq

Terminal中文件编码查看:
file name.cpp

宋鹏 2019-03-03 09:55 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/03/02/216277.html宋鹏宋鹏Sat, 02 Mar 2019 06:54:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/03/02/216277.htmlhttp://www.fometaux.com/hkingSP/comments/216277.htmlhttp://www.fometaux.com/hkingSP/archive/2019/03/02/216277.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216277.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216277.htmlclone
git clone https://github.com/songpeng22/HelloWorld.git

clone with username and password:
git clone https://username:password@github.com/username/repository.git.

clone old version:
git clone git://sourceware.org/git/glibc.git
cd glibc
git checkout glibc-2.28

config:
git config --global user.email "songpeng24@msn.com"
git config --global user.name 'songpeng22'

config status:
git config -l

project Status:
git status

在github上创建:
https://github.com/songpeng22/CMake_QT_03_Qml-Standard.git
git init
git add README.md
git add * git commit -m "first commit" git remote add origin https://github.com/songpeng22/CMake_QT_03_Qml-Standard.git git push -u origin master




宋鹏 2019-03-02 14:54 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/28/216272.html宋鹏宋鹏Thu, 28 Feb 2019 05:58:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/28/216272.htmlhttp://www.fometaux.com/hkingSP/comments/216272.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/28/216272.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216272.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216272.html多文件编辑(多个源码文件编辑)
1、打开第一个源码:
在命令行中输入
vi drivers/nand_legacy/nand_legacy.c
vi就打开了nand_legacy.c文件。。
2、打开第二个源码:
在此基础上,在vi编辑界面,命令模式下:
输入:sp common/env_nand.c
就可以再多打开一个源码。。
Tim:
文件夹符号一定要用" / "
3、在文件间切换:
(1)
Ctrl + w
然后上下键选择。。
(2)
Ctrl + w + w
按两次w切换过去。。



宋鹏 2019-02-28 13:58 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/28/216271.html宋鹏宋鹏Thu, 28 Feb 2019 05:58:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/28/216271.htmlhttp://www.fometaux.com/hkingSP/comments/216271.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/28/216271.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216271.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216271.html6-1、搜索字符串
(1)命令模式下输入:
/字符串
例如" /Section 3 "。
(2)如果查找下一个:
按“n”即可。
6-2、替换字符串:
(1)替换当前行第一个 ELFIN_GPIO_BASE 为 S3C2410_GPIO_BASE:
:s/ELFIN_GPIO_BASE/S3C2410_GPIO_BASE/ 
(2)替换每一行中所有 ELFIN_GPIO_BASE 为 S3C2410_GPIO_BASE:
:%s/ELFIN_GPIO_BASE/S3C2410_GPIO_BASE/g

6-2、替换:
全局替换(将P1替换为P2):
:%s/p1/p2/g:
替换实例:对/etc/apt/sources.list 中的网址进行替换,\要用/进行转义
%s/us.archive.ubuntu.com\/ubuntu\//old-releases.ubuntu.com\/ubuntu\//g

7、撤销操作
按u
可以撤销上次的操作。。


宋鹏 2019-02-28 13:58 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/28/216270.html宋鹏宋鹏Thu, 28 Feb 2019 05:56:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/28/216270.htmlhttp://www.fometaux.com/hkingSP/comments/216270.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/28/216270.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216270.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216270.htmlVI编辑器
1、复制一行
yy

2、粘贴
p

3、删除一行
dd

4、全部删除
dG(在命令模式下)

5、多行复制、剪切、粘贴
(1)、选择内容:
按v(在命令模式下按v)
切换到可视模式了,按方向键,知道选中你想要的内容
(2)、复制、剪切内容:
①按y,复制
②按d,剪切
③、粘贴内容:
将光标移到你要粘贴的位置。
按p
就粘贴了之前复制、剪切的内容。



宋鹏 2019-02-28 13:56 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/28/216269.html宋鹏宋鹏Thu, 28 Feb 2019 05:55:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/28/216269.htmlhttp://www.fometaux.com/hkingSP/comments/216269.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/28/216269.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216269.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216269.htmlVI编辑器_基础(打开、退出、切换)
1、创建和编辑文件:
sudo vi hello.cpp

2、编辑模式:
2-1、按 i 进入编辑模式
2-2、按ESC 进入命令模式

3、退出:
按 : 激活命令
:q退出
:wq保存退出

4、显示行号
:set nu

VI编辑器_模式
1、模式切换
ESC
进入命令模式
命令模式下:
o 换行
x 删除光标下的输入
dd 删除一行
hjkl 可以上下左右移动


进入末行模式
末行模式下:
q 退出

i
进入编辑模式。。
Tim:模式切换都是先ESC回到命令模式之后再进行。。



宋鹏 2019-02-28 13:55 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/26/216266.html宋鹏宋鹏Tue, 26 Feb 2019 13:00:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/26/216266.htmlhttp://www.fometaux.com/hkingSP/comments/216266.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/26/216266.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216266.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216266.html文件查看:
ls 

查看隐藏文件(比如 .git 这种entry文件,必须查看隐藏,才能看到)
ls -a
非终端查看隐藏文件:
Ctrl + H

查看文件详细信息
ls -al

查看和复制当前所在文件夹的完整路径:
终端中:
pwd
非终端中:
Ctrl + l


宋鹏 2019-02-26 21:00 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/26/216265.html宋鹏宋鹏Tue, 26 Feb 2019 13:00:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/26/216265.htmlhttp://www.fometaux.com/hkingSP/comments/216265.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/26/216265.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216265.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216265.html基础:
1、获得系统管理员权限:
su

2、虚拟机安装后,设置root权限:
sudo passwd root
然后设置root密码。。

源码权限变更
chmod 666 /Work/uboot/gec2410/*
Tim:让gec2410文件夹,拥有读写权限。。
源码权限查看
ls -lh /Work/uboot/gec2410/

宋鹏 2019-02-26 21:00 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/26/216264.html宋鹏宋鹏Tue, 26 Feb 2019 12:58:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/26/216264.htmlhttp://www.fometaux.com/hkingSP/comments/216264.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/26/216264.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216264.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216264.html解压缩
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName

.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName

运行程序:
有可执行文件hello,但是不能直接输入命令‘hello’来运行hello,必须输入命令‘./hello’



宋鹏 2019-02-26 20:58 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/26/216263.html宋鹏宋鹏Tue, 26 Feb 2019 12:58:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/26/216263.htmlhttp://www.fometaux.com/hkingSP/comments/216263.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/26/216263.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216263.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216263.html创建文件夹:
mkdir ./newfolder

删除文件夹
rm -rf /Work/uboot/uboot-1.3.4

重命名文件夹(跟移动一个命令):
mv cpu/arm920t/ 0_BackUp

重命名文件(跟移动一个命令):
mv a.txt b.txt

创建一个空文件
touch .gitignore

宋鹏 2019-02-26 20:58 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/hkingSP/archive/2019/02/26/216262.html宋鹏宋鹏Tue, 26 Feb 2019 12:53:00 GMThttp://www.fometaux.com/hkingSP/archive/2019/02/26/216262.htmlhttp://www.fometaux.com/hkingSP/comments/216262.htmlhttp://www.fometaux.com/hkingSP/archive/2019/02/26/216262.html#Feedback0http://www.fometaux.com/hkingSP/comments/commentRss/216262.htmlhttp://www.fometaux.com/hkingSP/services/trackbacks/216262.html文件搜索:
find
格式:
$ find <指定目录> <指定条件> <指定动作>
  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
  - <指定条件>: 所要搜索的文件的特征。
  - <指定动作>: 对搜索结果进行特定的处理。
实例1:
find board*
Tim:在uboot文件夹下,找下,看看board文件夹在不在。。
find board/sm*
Tim:在uboot文件夹下,找下,看看smdk2410文件夹,是否在board下面。。
实例2:
(1)find . -name 'my*'
Tim:
".",表示指定搜索当前目录(含子目录)。。
"-name",表示搜索条件是文件名。。
'my*',表示my开头的文件。。
(2)find . -name 'my*' -ls
"."表示指定搜索当前目录(含子目录)。。
"-name",表示搜索条件是文件名。。
'my*' -ls,表示搜索my开头的文件,并显示它们的详细信息。。
实例3:
find . -type f -mmin -10
"."表示指定搜索当前目录(含子目录)。。
"-type f" 表示搜索条件是文件类型。。
-mmin -10,表示搜索所有过去10分钟中更新过的普通文件。
如果不加-type f参数,则搜索普通文件+特殊文件+目录。

文件数据库搜索
locate
locate不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),比find快的多。。
Tim:
执行前,要执行updatedb命令,更新数据库。。
实例1:
locate /etc/sh
搜索etc目录下所有以sh开头的文件。
实例2:
(1)locate ~/m
搜索用户主目录下,所有以m开头的文件。
(2)locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。

宋鹏 2019-02-26 20:53 发表评论
]]>
12bet++博客-新手区http://www.fometaux.com/wythern/archive/2019/01/17/216208.htmlwythernwythernThu, 17 Jan 2019 12:27:00 GMThttp://www.fometaux.com/wythern/archive/2019/01/17/216208.htmlhttp://www.fometaux.com/wythern/comments/216208.htmlhttp://www.fometaux.com/wythern/archive/2019/01/17/216208.html#Feedback0http://www.fometaux.com/wythern/comments/commentRss/216208.htmlhttp://www.fometaux.com/wythern/services/trackbacks/216208.html在此

由于Go没有为slice提供shuffle函数,所以需要自己想办法。由于我只需要随机一次遍历1 -> N,所以这段code最匹配。
func main() {
  vals := []int{10, 12, 14, 16, 18, 20}
  r := rand.New(rand.NewSource(time.Now().Unix()))
  for _, i := range r.Perm(len(vals)) {
    val := vals[i]
    fmt.Println(val)
  }
}

似乎go不像scala有那种惰性求值的特性,所以这里的r.Perm()还是产生了一个slice,如果N很大可能是个问题。





wythern 2019-01-17 20:27 发表评论
]]>