LoginSignup
0
0

More than 3 years have passed since last update.

環境構築, Buildまで -C++(Visual studio CLIのみ)編-

Last updated at Posted at 2020-10-21

方針

基本的にVisual studio大きいので使いたくない、
基本的にCLIだけで行きたい。

cl
windowsのc++コンパイル
g++
GNU C++ Compilerの意味

//Windows
//コンパイルし、demo.obj, demo.exeが生成する。
cl /EHsc demo.cpp

//Linux

1.Windows

1. 行った結論

色々パス通さんとあかんのやね。
とりあえずコンパイルまでうまくいったので、以下を追加。

//コンパイルのためのcl.exeへのパスを通す
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64

//システム環境変数にそれぞれ追加する。
INCLUDE
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\

LIB
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\lib\x64\
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\ucrt\x64
//コンパイルし、demo.obj, demo.exeが生成する。
cl /EHsc demo.cpp

無事コンパイルできました。

/EHsc は、標準の C++ 例外処理動作を有効にするようコンパイラに指示するコマンド ライン オプションです。 これを行わないと、スローされた例外によって、破棄されないオブジェクトやリソースのリークが発生する可能性があります。

2. 詳細

行った流れ

//以下のようなものが参照できず順次パスに追加した。
//基本的に参照できなかったもののパスを通すだけ。

"libucrt.lib" → Windows Kitsにある
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\ucrt\x64

'uuid.lib' → Windows Kitsにある
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64

"crtdbg.h" → Windows Kitsにある
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt

コメント

基本的にx64, x86などでフォルダが分岐していて、どのパスを通すか迷うが、おそらく全パスがVisual Studio導入した際には自動で通されるんでしょう。今回はMSVC-x64系統のみを通した。エラーが生じたら随時追加しようと思います。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools
Llvm
MSVC
の分岐

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin
Hostx64
Hostx86
の分岐など

2.Linux

インストール

$ sudo apt install g++

1.コマンド実行

//オブジェクトファイル生成
> g++ -c main.cpp hello.cpp   
//オブジェクトファイルをリンクしてa.outという実行ファイルを生成
> g++ -o a.out main.o hello.o 

//オブジェクトファイルは生成されず、直接実行ファイル作成。
> g++ main.cpp hello.cpp

1.静的ライブラリを作成

> g++ -c hello.cpp good_morning.cpp             

//静的ライブラリ(.a)の作成
> ar rvs libgreetings.a hello.o good_morning.o  

> g++ main.cpp libgreetings.a  

2.共有ライブラリを作成

//オブジェクトファイル(.o)の作成
> g++ -fPIC -c hello.cpp good_morning.cpp                 

//共有ライブラリ(.so)の作成
> g++ -shared hello.o good_morning.o -o libgreetings.so   

//main.cppをコンパイルして.soとリンクし実行ファイル.outを作成
> g++ main.cpp -L. -lgreetings -Xlinker -rpath -Xlinker . 
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0