编译源码(含CMake)

8 篇文章 0 订阅
2 篇文章 0 订阅

习惯了使用命令行,下面介绍Windows下配置命令行编译C++和C#代码,不用使用工具创建工程,解决方案这么笨重

一、Windows下使用cl.exe编译C++代码:
 1.添加Path:
   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64

 2.添加INCLUDE:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\winrt

 3.添加LIB:
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\lib\x64
   C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64
   C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64

 

二、Windows下使用csc.exe编译C#代码:

  添加Path:   C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn;

 

三、查看命令的使用帮助: 命令 + /?,   如:

       “cl  /?“、“csc  /?”

    编译C++代码记录:

        cl test1.cpp   /Fo:objs/test1.obj  /Fe:outs/test1.exe

       outs\test1.exe

   编译C#代码记录:

       csc  /out:outs/test1.exe  test1.cs

        .\outs\test1.exe     //在 Mac下编译C#同上,但运行时要借助 mono,格式如右: mono ./outs/test1.exe

                                    //Mac下的 Mono安装使用参考Mono官网:https://www.mono-project.com/docs/about-mono/supported-platforms/macos/.

中文显示乱码:

 chcp     //查看当前系统编码 

 chcp 65001  //临时更改会话窗囗的编码
      65001 UTF-8代码页
      950 繁体中文
      936 简体中文默认的GBK
     437 MS-DOS美国英语

   

四、Windows cmd下的常用命令:

    创建目录: md / mkdir  XXX
    删除目录:rd / rmdir  XXXX
    创建空文件 :    type nul>Test.cs      //此命令行也是在命令行中浏览文件内容
   创建非空文件:  echo [内容]>Test.txt  
    删除文件: del   XXX.xxx

五. 命令行调用文件编辑工具打开源码(等文本)文件, 进行编辑:

    前提:文本编辑工具已添加到系统环境变量;

   使用:notepad  Test.cs

             notepad++  Test.cs    //notepad++代码有高亮等颜色和缩进,更好看

 

===================================

CMake:
CMake简明教程 实例工程演示(含字幕): https://www.bilibili.com/video/BV1A7411f7jT?from=search&seid=7552495904821832198
OpenGL ES抖音分屏效果实现 : https://www.bilibili.com/video/BV1ka4y1W7uy?p=2
NDK Cmake交叉编译 : https://www.bilibili.com/video/BV1Fh41117K1?p=4
Android Studio CMake : https://developer.android.google.cn/studio/projects/configure-cmake

CMake的工程结构:
   根目录下有CMakeLists.txt
   子级目录下也有CMakeLists.txt
  只要是工程目录就有CMakeLists.txt,且根目录下的CMakeLists.txt会包含子目录的CMakeLists.txt

  添加子目录, 使用add_subdirectory(subfolder),实际上是添加subfolder下的CMakeLists.txt
  可以嵌套添加,每个带有CMakeLists.txt的目录就是一个实例工程,外层的代表一个目录
  
   需要引用另外的目录下的头文件: 
      include_directories( 
         ${CMAKE_SOURCE_DIR}/samples/base64
      ) 
  
  样例1:设置(简单的)工程文件:
    project(helloword)
    set( src
        ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/lib.cpp
    )
    
    add_executable( helloword
        ${src}
    )
    
    #另外一种方式链接本项目下的静态库,即添加外部静态库
    #link_directories(
    #   ${CMAKE_SOURCE_DIR}/build/samples/base64
    #)
    

    target_link_libraries(
        linkage   #最外层大项目下的子项目(静态库)
        base64
#        "base64"  #它内部查找规则是查找libbase64.a (在前面加lib,且尾部加.a)
        ws2_32    #这是编译器自带的库
    )
    ##link多个库时顺序有关系的,所以在编译linkage时,它会先编译base64
    ##链接编译器自带的库时,不需要使用link_directories()命令 //编译器会自带添加
    
    生成静/动态库:
      set( src
          ${CMAKE_CURRENT_SOURCE_DIR}/base64.cpp
          ${CMAKE_CURRENT_SOURCE_DIR}/base64.h
          ....
      )
      add_library( base64 STATIC
          ${src}
      )
      add_library( base64_dynamic SHARED
          ${src}
      )
    生成动态库时,会生成两个库文件: 1个xxx.dll(动态库,大的)和1个 xxx.dll.a(动态库对应的静态库,很小的,其实是导入库), 链接时是链接到.a文件,运行的时候才加载.dll
    
    
     
    
    
  
    

     

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值