C C++笔记

1.环境设置

1.1Eclipse

1.1.1下载安装JDK。

下载安装eclipse cpp。

1.1.2 使用GNU工具集

1.1.2.1下载安装MinGWCygwin,两者选一。

MinGW,Cygwin都是windows下GNU工具集。MinGW将GNU的api转为win的api,cywin相当于一个linux的拟器。

MinGW,MinGW有两个选择,一个是原始版的MinGW,自包含32位版本。另一个版本是Mingw w64,是从MinGW中分离出来的,包含64位。

1.1.2.2如果需要使用GTK+开发GUI,还需下载安装MSYS2
pacman -Syu //更新整个msys系统
pacman -S mingw-w64-x86_64-toolchain //安装工具链

在MSYS2中通过以下命令安装依赖包:

添加GTK 3.0包

pacman -S mingw-w64-x86_64-gtk3

添加GTK可视化工编辑工具glade,生成通用XML

pacman -S mingw-w64-x86_64-glade

帮组文档:

pacman -S mingw-w64-x86_64-devhelp

如果使用python 3进行开发:
pacman -S mingw-w64-x86_64-python3-gobject

如果使用python 2进行开发:
pacman -S mingw-w64-x86_64-python2-gobject

编译工具toolchain和一般工具base-devel:

pacman -S mingw-w64-x86_64-toolchain base-devel

 

1.1.4.使用eclipse新建c或c++项目,Toolchains选择MinGW或者Cygwin。

以开发GTK+程序为例,需要在eclipse中添加相应的compiler和linker:

1.1.4.1打开MSYS目录下的mingw64.exe.
1.1.4.2在eclipse添加includes和libraries

1.1.4.2.1增加头文件

在eclipse项目右键->properties->C/C++ Build -> GCC C/C++ Compiler -> Includes中的include paths中添加以下命令的结果

 pkg-config gtk+-3.0 --cflags > d:/includes.txt

结果为:

-mms-bitfields -pthread -mms-bitfields -ID:/lib/msys64/mingw64/include/gtk-3.0 -ID:/lib/msys64/mingw64/include/cairo -ID:/lib/msys64/mingw64/include -ID:/lib/msys64/mingw64/include/pango-1.0 -ID:/lib/msys64/mingw64/include/atk-1.0 -ID:/lib/msys64/mingw64/include/cairo -ID:/lib/msys64/mingw64/include/pixman-1 -ID:/lib/msys64/mingw64/include -ID:/lib/msys64/mingw64/include/freetype2 -ID:/lib/msys64/mingw64/include/libpng16 -ID:/lib/msys64/mingw64/include/harfbuzz -ID:/lib/msys64/mingw64/include/glib-2.0 -ID:/lib/msys64/mingw64/lib/glib-2.0/include -ID:/lib/msys64/mingw64/include -ID:/lib/msys64/mingw64/include/freetype2 -ID:/lib/msys64/mingw64/include -ID:/lib/msys64/mingw64/include/harfbuzz -ID:/lib/msys64/mingw64/include/libpng16 -ID:/lib/msys64/mingw64/include/gdk-pixbuf-2.0 -ID:/lib/msys64/mingw64/include/libpng16 -ID:/lib/msys64/mingw64/include/glib-2.0 -ID:/lib/msys64/mingw64/lib/glib-2.0/include -ID:/lib/msys64/mingw64/include

需要添加的结果为:

D:/lib/msys64/mingw64/include/gtk-3.0
D:/lib/msys64/mingw64/include/gdk-pixbuf-2.0
D:/lib/msys64/mingw64/include/cairo
D:/lib/msys64/mingw64/include/libpng16
D:/lib/msys64/mingw64/include/glib-2.0
D:/lib/msys64/mingw64/lib/glib-2.0/include
D:/lib/msys64/mingw64/include/atk-1.0
D:/lib/msys64/mingw64/include/harfbuzz
D:/lib/msys64/mingw64/include/pixman-1
D:/lib/msys64/mingw64/include/freetype2
D:/lib/msys64/mingw64/include/pango-1.0

1.1.4.2.1增加链接库

在eclipse项目右键->properties->C/C++ Build -> MinGW C++ Linker -> libraries中的libraries中添加以下命令的结果。

pkg-config gtk+-3.0 --libs

结果为:

-LD:/lib/msys64/mingw64/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl

需要添加的结果为:

gtk-3
gdk-3
gdi32
imm32
shell32
ole32
uuid
winmm
dwmapi
setupapi
cfgmgr32
z
pangowin32-1.0
pangocairo-1.0
pango-1.0
atk-1.0
cairo-gobject
cairo
gdk_pixbuf-2.0
gio-2.0
gobject-2.0
glib-2.0
intl

libraries search path 中添加mingw64库,D:/lib/msys64/mingw64/lib

 

1.1.4.2.3 Command line pattern

某些情况(不明)在 GCC C/C++ Compiler和MinGW C Linker 中的Command line pattern中将${INPUTS} 调到${COMMAND}后面;
(如:${COMMAND}  ${INPUTS} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT})

1.1.5.新建 CMake項目

eclipse photon 开始支持直接创建CMake项目。

1.1.5.1下载Ninja

因为eclipse进行构建时,默认调用了以下命令,暂时不知道哪里可以修改,所以需要下载使用Ninja。

cmake -G Ninja

 Ninja是一个类似make的编译构建工具。下载Ninja,他只有一个exe文件,在系统环境变量中增加ninja.exe。

1.1.5.2下载CMake

CMake是一个简化创建makefile和build.ninja等编译构建文件的工具。下载CMake,并且在系统环境变量中增加CMake下的bin目录。

1.1.5.3建立CMake项目:

74e5423cb199caac3b348f9d70d357bfe36.jpg   f4dbdccb8bc68f0f3151585396547b86057.jpg

1.1.5.4编译工程

b48d2c135cb155ed54d98537216b1541728.jpg

1.1.6. CMake

 接下来编写CMakeLists.txt文件,该文件放在和src,include的同级目录,实际方哪里都可以,只要里面编写的路径能够正确指向就好了。CMakeLists.txt文件,如下所示:

#1.cmake verson,指定cmake版本 
cmake_minimum_required(VERSION 3.2)

#2.project name,指定项目的名称,一般和项目的文件夹名称对应
PROJECT(test_sqrt)

#3.head file path,头文件目录
INCLUDE_DIRECTORIES(include )

#4.source directory,源文件目录
AUX_SOURCE_DIRECTORY(src DIR_SRCS)

#5.set environment variable,设置环境变量,编译用到的源文件全部都要放到这里,否则编译能够通过,但是执行的时候会现各种问题,比如"symbol lookup error xxxxx , undefined symbol"
SET(TEST_MATH ${DIR_SRCS})

#6.add executable file,添加要编译的可执行文件
ADD_EXECUTABLE(${PROJECT_NAME} ${TEST_MATH})

#7.add link library,添加可执行文件所需要的库,比如我们用到了libm.so(命名规则:lib+name+.so),就添加该库的名称
TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)

 CMakeLists.txt主要包含以上的7个步骤,具体的意义,请阅读相应的注释,或参考官方文档

1.2 Visual Studio Code

1.2.1.下载安装visual studio code

安装vsc后,需要安装C/C++插件,和cmake插件。

点开扩展后,输入c++,后出现插件,然后选择安装。同理安装cmake。

66a5ef340c407a536d5584c58ea4045db87.jpg

1.2.2.安装Mingw w64

下载并安装Mingw w64。并且在环境变量中添加mingw目录下的bin目录。

1.2.3.添加一个类main.cpp

#include <iostream>
using namespace std;

int main()
{
    cout << "hello world" << endl;
    for(int i = 0;i < 100;i++)
    {
        cout << i << endl;
    }

    return 0;
}

1.2.4.生成tasks.json

在vsc中按ctrl + shift + p,然后输入tasks: cofigure task -> "使用模板创建tasks.json" -> “Others运行任意外部命令的示例”,就会得到文件tasks.json。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "echo Hello"
        }
    ]
}

其中如果使用gcc,则commad给为g++。并添加运行g++时要使用的参数到args。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "g++"
            "args": [
                "-g", "main.cpp"
            ]
        }
    ]
}

 

1.2.5.编译

按ctrl + shift + B -> ”没有找到要运行的生成任务。配置生成任务... “ -> "echo"。

会在tasks.json中生成

"group": {
                "kind": "build",
                "isDefault": true
            },

最后生成的task.json为

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "g++",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "args": [
                "-g", "main.cpp"
            ]
        }
    ]
}

再按ctrl + shift + B,会生成a.exe在工作目录中。

1.3.自定义图标

一般来说生成exe文件之后,都想把图标编程自定义的样子。

1.3.1 在win32编程中生成rc文件

格式: nameID BITMAP filename

每一行第一个是资源的id、第二个是文件格式、第三个是文件所在路径。并且可以定义多行,每一行是一种分辨率的ico图标:

1 ICON "icon.ico"
3056 ICON "icon.ico"

1.3.2编译rc文件

使用mingw的windres命令进行编译,格式为:

windres -o [输出文件] [输入文件]

windres -o icon.o  ../src/icon.rc

在eclipse中Build Steps -> rPre-bulid steps -> Commond中可以进行设置。

101ccaae38721bb7c11ab4569cbf664a9db.jpg

1.3.3链接编译后的rc文件

使用g++编译的时候进行链接:

g++ -o waf.exe "src\\waf.o" icon.o 

在eclipse中增加, C/C++ Build -> Settings -> ToolSettings -> MinGW C++ Linker -> other中增加编译后的icon.o(:要增加绝对路径,否者重新build的时候可能会出错)。

65c63f99ad29f9692a26b0f1023c89fa198.jpg

 

转载于:https://my.oschina.net/rouway/blog/1800239

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值