- 投稿日:2020-12-27T23:01:17+09:00
Qiitaでスクリーンショットを効率よく貼る方法
あらすじ
「Qiitaで」と書きましたが、汎用的に使えるようにまとめました。
誰かから「スクショってどうやる?」って聞かれたとき用の記事です。この記事の目玉は最後の表です。
表にすると見やすいですね。
Win・Mac両対応です。Windows 10
昔からある方法では、
PrintScreen
で全画面スクリーンショットでした。また、ウィンドウごとにスクリーンショットを撮りたい時には、Alt
+PrintScreen
です。モダンな方法は?というと
Win
+Shift
+s
です。このショートカットで「スケッチ & 切り取り」アプリが起動します。Windows10に標準で同梱のアプリなので必ず使えます。Macで言う「スクリーンショット」アプリですね。
前は「Snipping Tool」という名称のアプリでしたが、UWPのストアアプリとなって名前が変わったようですね。見た目もカッコよくなり、丸く切り取ったりもできてステキです。
「スケッチ & 切り取り」の設定はデフォルトで下記のような設定になっています。この中で気になるものがある場合には、スタートメニューから「スケッチ & 切り取り」を探して起動し、設定を開いて変更してみてください。
また、スクリーンショットの履歴を残したかったり、毎回ファイルに保存された方が都合がいいこともあります。そんな時は、OneDriveの設定を確認してみてください。下記のように「作成したスクリーンショットをOneDriveに自動的に保存する」という項目があります。
Mac OS
Command
+Shift
+4
で矩形選択のスクリーンショットをとることができます。
また、Command
+Shift
+3
だと全画面のスクリーンショットです。これだとウィンドウのスクリーンショットの撮り方のバリエーションが少ないです。
そこでCommand
+Shift
+5
の出番です。これにより、「スクリーンショット」というアプリが起動します。
この「スクリーンショット」はMacに標準で同梱のアプリです。Winで言う「スケッチ & 切り取り」みたいなものです。しかし、上記のショートカットだけでは、画像ファイルが作成されるだけなので困っていました。
- Qiita記事を編集中にスクショを貼りたいと思う
- 他のウィンドウに移る
- スクショを取る
- Qiita記事に戻る
- 画像選択ボタンを押す
- 画像を選ぶ
- Qiita記事の続きを書き進める
4と5を減らして、サボりたかったワケです。
いろいろ調べていると
Control
キーが重要だということがわかってきました。
どうやら、MacではControl
を押しながらだと、クリップボードにコピーされるみたいです。具体的にどうするといいのか下記の表にまとめました。
表で整理
OS ターゲット 送り先 ショートカット Mac 全画面 クリップボード
Command
+Shift
+3
+Ctrl
Mac 矩形 クリップボード
Command
+Shift
+4
→Ctrl
+クリック
Mac 全画面 画像ファイル
Command
+Shift
+3
Mac 矩形 画像ファイル
Command
+Shift
+4
Mac 前回指定1 クリップボード
Command
+Shift
+5
→Ctrl
+クリック
Mac 前回指定1 画像ファイル
Command
+Shift
+5
→クリック
Win 全画面 クリップボード
PrintScreen
Win ウィンドウ クリップボード
Alt
+PrintScreen
Win 前回指定1 クリップボード
Win
+Shift
+s
まとめ
自分的に、記事をまとめながらOSを比較してみることで、「こういう差異が生まれるんだね。」とか知見が高まりました。自分がUIを作るときなどにも役に立つ、いい体験ですね。今後も定期的に、こういった記事を書こうかなと思います。
Excelsior!
前回指定とは、「前回スクリーンショットしたときの範囲」をOSが記憶していて、それを指定するということです。 ↩
- 投稿日:2020-12-27T22:36:18+09:00
Mac でキーボードに不具合が起きた時の対処方法【応急処置】
結論
から言うと、以下の記事
Macに原因不明の不具合が起きたら「SMCリセット」のやり方(2) -- あわてないよう「SMCリセット」について知っておこう
の、「レベル1」の作業で改善しました。追記 - 12月27日(日)
実行した後、一時的には改善したものの、1時間ほど使っていて直ぐに再発しました。
(再発したとは言え、多少はマシになった印象があるので、試してみる価値はありそうです)
その後、「レベル2」の方法を試しました。
厳密には、Apple 公式の SMC リセット方法(以下の記事)が正しいようです。
Mac の SMC をリセットする方法
また、後日、状況を追記します。経緯
ここ2ヶ月ほど、使用している Mac の「N」キーに不具合があり、思うような入力ができず、使用率も高いので困っていました。
調べてみると、公式に修正プログラムが用意されている(こちら→ https://support.apple.com/ja-jp/keyboard-service-program-for-mac-notebooks )不具合に類似していました。
が、修理に数日〜1週間かかるようなので、余裕がなく迷っていたのですが、同様にお困りの方も、まずは上記の方法を試してみるといいかもしれません。
ちなみに、
『SMCは「System Management Controller」の頭文字をとった略語だ。(中略)Intel製のプロセッサーを搭載したMacが装備するもので、Macのハードウェアの中でも、主に電源周りを管理する役割を担っている。』(引用)
だそうです。
今後の対策
原因については、正確にはわからないのですが、僕の例で考えられるのは、OSのアップデート、ソフト(Docker?)のインストール辺りです。一度、Docker for Mac を使用した影響?と思われるエラーが kernel で起きたのを覚えていて、その辺りを少し疑っています。
いずれにしても、一番可能性が高いのは、OSのアップデート(Big Sur version 11.0.1)ですね。
色々なツールを試すことが多いのですが、ほとんど記録を取っていなかったので、今後は、しっかり作業記録を取ろうと思います。
- 投稿日:2020-12-27T16:28:28+09:00
Big Surでライブラリのパスが通ってなくてコンパイルエラーが出る
環境
- macOS Big Sur 11.1
- MacBook Air (M1, 2020)
- Command Line Tools 12.3
- Rosetta 2 使用
- homebrewで入れたgcc (gfortran)
コンパイルエラー
gfortranを使ってfortranのプログラムをコンパイルしようとしたら下記のエラー
ld: library not found for -lSystemBig Surではなぜかライブラリにパスが通ってないらしい.gfortranだけではなくgccなどでも同じエラーが出る.
めんどくさいが,コンパイルするときにライブラリのパスを指定する.-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/libこれでコンパイルできた.
LAPACK
MacではBLASやLAPACKはデフォルトでAccelerate frameworkに含まれていて,これまでのMac OSでは確か何もしなくてもデフォルトでパスが通ってLAPACKなどが使えたはず.Big Surでは上記問題で
-llapackだけではコンパイルできなかった.
-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -llapackパスを指定すればLAPACKが使えてコンパイルが通った.
ライブラリの実態?
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
を調べてみるとliblapack.tbd
というファイルがあって中身を見ると,install-name: '/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib'ライブラリが置いてある実際の場所が書いてある.この場所を見に行ってみても
libLAPACK.dylib
というライブラリが見つからない.Big Surより前のOSでは確かにこの場所にLAPACKとかBLASのライブラリが置いてある.以前のOSではそれらのライブラリのシンボリックリンクが/usr/lib
に置いてあった./usr/lib
は何も設定しなくてもライブラリを読みに行ってくれるディレクトリだったはず.Big Surでライブラリファイルが見つからないのになぜかコンパイルはうまく行って,できた実行ファイルを
otool -L
で調べてみると下記のlibLAPACK.dylib
がリンクされている./System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylibファイルがないのにちゃんと動いているのが謎.
- 投稿日:2020-12-27T15:19:59+09:00
MacでのGCCのコンパイルエラーの対処法を詳細に解説する
[1]前書き
この記事はMacでGCCを"正しく"環境構築しよう!の続編なので、先に読んでからこちらの記事を読むことをお勧めします。手順通りに進めていただければGCCを使えるはずです1。
この記事では、HomebrewでインストールしたGCCでコンパイルしようとすると、
fatal error: '〇〇.h' file not found
とエラーが出る場合の対応策について紹介します。また、GCC以外の場面で
fatal error: '〇〇.h' file not found
のエラーが出た場合も紹介した方法を応用することで問題を解決することができるような解説を以下では心がけています。[2]前提
まず、GCCが使える状態になっていることを以下のコマンドで確認します。バージョンの違いはありますが、一番下の行が
Homebrew GCC
になっていればHomebrewのGCCが使える状態になっています。異なる場合はMacでGCCを"正しく"環境構築しよう!を先に読んでください。% g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/10.2.0/libexec/gcc/x86_64-apple-darwin20/10.2.0/lto-wrapper Target: x86_64-apple-darwin20 Configured with: ../configure --build=x86_64-apple-darwin20 --prefix=/usr/local/Cellar/gcc/10.2.0 --libdir=/usr/local/Cellar/gcc/10.2.0/lib/gcc/10 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-10 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 10.2.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk SED=/usr/bin/sed Thread model: posix Supported LTO compression algorithms: zlib gcc version 10.2.0 (Homebrew GCC 10.2.0)[3]サーチパスの確認と
〇〇.h
の検索
file not found
への対処を見れば基本的には解決するので、この章を読むのは必須ではありません。但し、解決しない場合に自力で解決するのにこの章は役立つと期待しています。(1)原因の確認
fatal error: '〇〇.h' file not found
は〇〇.h
(ヘッダファイル)が見つからないことが原因です。まずはヘッダファイルのインクルード元を見つけるためにサーチパスを確認しましょう。サーチパスは適当なC++のファイル(
hoge.cc
)を用意して-v
オプション付きでコンパイル(% g++ -v hoge.cc
2)した時の出力の中にあります3。また、自分の出力結果の該当部分のみを参考に載せておきます4。つまり、以下のサーチしているディレクトリに
〇〇.h
がない場合にfatal error: '〇〇.h' file not found
というエラーが発生します。% g++ -v hoge.cc #その他の出力 ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/local/include" ignoring nonexistent directory "/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../x86_64-apple-darwin20/include" ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../include/c++/10.2.0 /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../include/c++/10.2.0/x86_64-apple-darwin20 /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../include/c++/10.2.0/backward /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/include /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/include-fixed /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/System/Library/Frameworks End of search list. #その他の出力ちなみに、Macに元々あるclang++のサーチパスは以下のようになりました。
% clang++ -v hoge.cc #その他の出力 ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/local/include /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1 /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include /Library/Developer/CommandLineTools/usr/include /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) End of search list. #その他の出力(2)サーチパスの詳細
サーチパスはシステム側で決められています5。自分の環境を含む複数の環境で確かめた限りでは、HomebrewでインストールしたGCC(
/usr/local/Cellar/gcc/10.2.0/
)の配下とCommandLineToolsの一部としてインストールされるMacOSXのSDK6(/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/
)の配下のヘッダファイルを含むディレクトリを指します7。(3)
〇〇.h
の検索サーチパスを把握し出力をメモしたらlocateコマンドを用いて
〇〇.h
を探します。同様の検索用のコマンドのfindコマンドもありますが、ここでは高速なlocateコマンドの利用を推奨します。Macでのlocateコマンドの使い方は環境構築で最も役に立ったlocateコマンドを紹介するを参考にしてください。
例えば、
fatal error: 'wchar.h' file not found
となる場合、自分の環境でwchar.h
を探すと以下のようになります。% locate /wchar.h /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/wchar.h /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include/wchar.h /Library/Developer/CommandLineTools/usr/include/c++/v1/wchar.h /usr/local/Cellar/gcc/10.2.0/include/c++/10.2.0/tr1/wchar.h[4]
file not found
への対処まず、MacでGCCを"正しく"環境構築しよう!の内容を完遂すれば、HomebrewでインストールしたGCCの配下のヘッダファイルは普通はインクルードできます。従って、MacOSのSDKの配下のヘッダファイルがインクルードできていないと考えられます。
具体的には以下の手順で実行を行い、その都度エラーが消えるかを確認してください。
(1)CommandLineTollsの確認
まず、CommandLineToolsに問題がないかを確認しましょう。具体的な手順は「MacでGCCを"正しく"環境構築しよう!」の[1]に書いてあります。
(2)SDKの確認
次は、インストールすべきSDKが異なる場合があるので確認しましょう。
% g++ -v
を実行し、出力の中の--with-sysroot
オプションの指すディレクトリを確認してください。自分であれば/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk
となっています。実は、
--with-sysroot
オプションで指定されたMacOSのSDKの配下からヘッダファイルがインクルードされます8。従って、SDKのバージョンの合うCommandLineToolsをインストールしてください。SDKのバージョンの合うCommandLineToolsのインストール方法については「MacでGCCを"正しく"環境構築しよう!」の[1]の(2)を参考にしてください。(3)
-sysroot
オプションでの指定(2)まででうまくいかない場合や最新のSDKを使いたい場合は用いるSDKをコンパイル時のオプションで指定します。インストール済みのSDKを
% ls /Library/Developer/CommandLineTools/SDKs
で調べ、使いたいSDKを-sysroot
オプションで指定すれば良いです9。オプションとして
-sysroot
オプションのみを使うと、以下のようなコマンドになると思います。% g++ -syroot=/Library/Developer/CommandLineTools/SDKs/〇〇.sdk hoge.cc以上を正確に行ってもうまくいかない場合は他の問題が発生してるので、自分で対処方法を考えるか検索してください10。
[5]C++のサンプルファイル(
hoge.cc
)何回か出てくる
hoge.cc
を載せておきます。〇〇.h
をインクルードして終了するだけのソースファイルです。〇〇.h
は適当に置き換えてください。hoge.cc#include<〇〇.h> int main(){ return 0; }
この記事でかなり網羅してあると思うので、うまくいかない場合は一つ一つの手順を完遂できているかということに着目してデバッグしてください。 ↩
これ以降、
% コマンド名
で実行するコマンドを示します。シェルによっては%
が$
ですが、適宜読み替えてください。 ↩GCCのドキュメントのサーチパスに書いてあります。 ↩
ignoring nonexistent directory
は存在しないディレクトリにもサーチパスが通っていることを表します。 ↩調査してもわからなかったので、設定ファイルの場所がわかる方は教えていただきたいです。 ↩
MaxOSXをターゲットプラットフォームとしたC++アプリケーションの開発に必要な一連のファイルが含まれています。詳しくは[SDK マネージャ]を参考にすると良いです。 ↩
バージョンなどが環境により少し異なる可能性があることに注意してください。また、GCCもSDKも複数ある場合は気をつけてください。 ↩
設定ファイルを書き換えて--with-sysrootのデフォルトを直接書き換えようと思ったのですが、わかりませんでした。teratailで質問しているので、有識者の方はこちらのコメント欄またはteratailで教えていただけるとありがたいです。 ↩
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
というバージョン名のついていないSDKがある場合、% ls -l /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
で確認してわかるようにシンボリックリンクになります。リンク先が正しければこちらを指定しても問題ありません。 ↩コメントをいただけると反応できるかもしれません。 ↩
- 投稿日:2020-12-27T15:19:59+09:00
MacでGCCのコンパイルを"正しく"通そう!
[1]前書き
この記事はMacでGCCを"正しく"環境構築しよう!の続編なので、先に読んでからこちらの記事を読むことをお勧めします。手順通りに進めていただければGCCを使えるはずです1。
この記事では、HomebrewでインストールしたGCCでコンパイルしようとすると、
fatal error: '〇〇.h' file not found
とエラーが出る場合の対応策について紹介します。また、GCC以外の場面で
fatal error: '〇〇.h' file not found
のエラーが出た場合も紹介した方法を応用することで問題を解決することができるような解説を以下では心がけています。[2]前提
まず、GCCが使える状態になっていることを以下のコマンドで確認します。バージョンの違いはありますが、一番下の行が
Homebrew GCC
になっていればHomebrewのGCCが使える状態になっています。異なる場合はMacでGCCを"正しく"環境構築しよう!を先に読んでください。% g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/10.2.0/libexec/gcc/x86_64-apple-darwin20/10.2.0/lto-wrapper Target: x86_64-apple-darwin20 Configured with: ../configure --build=x86_64-apple-darwin20 --prefix=/usr/local/Cellar/gcc/10.2.0 --libdir=/usr/local/Cellar/gcc/10.2.0/lib/gcc/10 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-10 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 10.2.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk SED=/usr/bin/sed Thread model: posix Supported LTO compression algorithms: zlib gcc version 10.2.0 (Homebrew GCC 10.2.0)[3]サーチパスの確認と
〇〇.h
の検索
file not found
への対処を見れば基本的には解決するので、この章を読むのは必須ではありません。但し、解決しない場合に自力で解決するのにこの章は役立つと期待しています。(1)原因の確認
fatal error: '〇〇.h' file not found
は〇〇.h
(ヘッダファイル)が見つからないことが原因です。まずはヘッダファイルのインクルード元を見つけるためにサーチパスを確認しましょう。サーチパスは適当なC++のファイル(
hoge.cc
)を用意して-v
オプション付きでコンパイル(% g++ -v hoge.cc
2)した時の出力の中にあります3。また、自分の出力結果の該当部分のみを参考に載せておきます4。つまり、以下のサーチしているディレクトリに
〇〇.h
がない場合にfatal error: '〇〇.h' file not found
というエラーが発生します。% g++ -v hoge.cc #その他の出力 ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/local/include" ignoring nonexistent directory "/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../x86_64-apple-darwin20/include" ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../include/c++/10.2.0 /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../include/c++/10.2.0/x86_64-apple-darwin20 /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../../../../../include/c++/10.2.0/backward /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/include /usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/include-fixed /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/System/Library/Frameworks End of search list. #その他の出力ちなみに、Macに元々あるclang++のサーチパスは以下のようになりました。
% clang++ -v hoge.cc #その他の出力 ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/local/include /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1 /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include /Library/Developer/CommandLineTools/usr/include /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) End of search list. #その他の出力(2)サーチパスの詳細
サーチパスはシステム側で決められています5。自分の環境を含む複数の環境で確かめた限りでは、HomebrewでインストールしたGCC(
/usr/local/Cellar/gcc/10.2.0/
)の配下とCommandLineToolsの一部としてインストールされるMacOSXのSDK6(/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/
)の配下のヘッダファイルを含むディレクトリを指します7。(3)
〇〇.h
の検索サーチパスを把握し出力をメモしたらlocateコマンドを用いて
〇〇.h
を探します。同様の検索用のコマンドのfindコマンドもありますが、ここでは高速なlocateコマンドの利用を推奨します。Macでのlocateコマンドの使い方は環境構築で最も役に立ったlocateコマンドを紹介するを参考にしてください。
例えば、
fatal error: 'wchar.h' file not found
となる場合、自分の環境でwchar.h
を探すと以下のようになります。% locate /wchar.h /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/wchar.h /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include/wchar.h /Library/Developer/CommandLineTools/usr/include/c++/v1/wchar.h /usr/local/Cellar/gcc/10.2.0/include/c++/10.2.0/tr1/wchar.h[4]
file not found
への対処まず、MacでGCCを"正しく"環境構築しよう!の内容を完遂すれば、HomebrewでインストールしたGCCの配下のヘッダファイルは普通はインクルードできます。従って、MacOSのSDKの配下のヘッダファイルがインクルードできていないと考えられます。
具体的には以下の手順で実行を行い、その都度エラーが消えるかを確認してください。
(1)CommandLineTollsの確認
まず、CommandLineToolsに問題がないかを確認しましょう。具体的な手順は「MacでGCCを"正しく"環境構築しよう!」の[1]に書いてあります。
(2)SDKの確認
次は、インストールすべきSDKが異なる場合があるので確認しましょう。
% g++ -v
を実行し、出力の中の--with-sysroot
オプションの指すディレクトリを確認してください。自分であれば/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk
となっています。実は、
--with-sysroot
オプションで指定されたMacOSのSDKの配下からヘッダファイルがインクルードされます8。従って、SDKのバージョンの合うCommandLineToolsをインストールしてください。SDKのバージョンの合うCommandLineToolsのインストール方法については「MacでGCCを"正しく"環境構築しよう!」の[1]の(2)を参考にしてください。(3)
-sysroot
オプションでの指定(2)まででうまくいかない場合や最新のSDKを使いたい場合は用いるSDKをコンパイル時のオプションで指定します。インストール済みのSDKを
% ls /Library/Developer/CommandLineTools/SDKs
で調べ、使いたいSDKを-sysroot
オプションで指定すれば良いです9。オプションとして
-sysroot
オプションのみを使うと、以下のようなコマンドになると思います。% g++ -syroot=/Library/Developer/CommandLineTools/SDKs/〇〇.sdk hoge.cc以上を正確に行ってもうまくいかない場合は他の問題が発生してるので、自分で対処方法を考えるか検索してください10。
[5]C++のサンプルファイル(
hoge.cc
)何回か出てくる
hoge.cc
を載せておきます。〇〇.h
をインクルードして終了するだけのソースファイルです。〇〇.h
は適当に置き換えてください。hoge.cc#include<〇〇.h> int main(){ return 0; }
この記事でかなり網羅してあると思うので、うまくいかない場合は一つ一つの手順を完遂できているかということに着目してデバッグしてください。 ↩
これ以降、
% コマンド名
で実行するコマンドを示します。シェルによっては%
が$
ですが、適宜読み替えてください。 ↩GCCのドキュメントのサーチパスに書いてあります。 ↩
ignoring nonexistent directory
は存在しないディレクトリにもサーチパスが通っていることを表します。 ↩調査してもわからなかったので、設定ファイルの場所がわかる方は教えていただきたいです。 ↩
MaxOSXをターゲットプラットフォームとしたC++アプリケーションの開発に必要な一連のファイルが含まれています。詳しくは[SDK マネージャ]を参考にすると良いです。 ↩
バージョンなどが環境により少し異なる可能性があることに注意してください。また、GCCもSDKも複数ある場合は気をつけてください。 ↩
設定ファイルを書き換えて--with-sysrootのデフォルトを直接書き換えようと思ったのですが、わかりませんでした。teratailで質問しているので、有識者の方はこちらのコメント欄またはteratailで教えていただけるとありがたいです。 ↩
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
というバージョン名のついていないSDKがある場合、% ls -l /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
で確認してわかるようにシンボリックリンクになります。リンク先が正しければこちらを指定しても問題ありません。 ↩コメントをいただけると反応できるかもしれません。 ↩
- 投稿日:2020-12-27T14:05:23+09:00
4.Mac入門〜WindowsとMacの違い
前置き
Macbookを初めて使うことになったので、自分の理解をアウトプットするために作成。
基本的にキーボードを使った操作が好きなので、タッチパッドの利用については触れない。
また気づきがあれば随時更新予定。環境
- macOS Big Sur 11.1
- MacBook Pro (13-inch)
WindowsとMacの違い
WindowsユーザがMacを利用する上で戸惑う部分をまとめてみる。
各種アプリケーションのメニューの表示場所
Windowsではアクティブウィンドウの一番上にメニューが表示されるが、Macでは常に画面の上部にメニューが表示される。
個別のアプリケーションの上部にはメニューがないし、メニューを開きたいなら対象のアプリをアクティブにする必要がある。システムメニュー
Windowsでは画面左下のスタートメニューからシャットダウン、再起動を行うが、Macの場合は画面左上のりんごアイコンから操作ができる。
アプリ起動方法
Windowsではスタートメニューから対象アプリを探せるが、MacはDockのアイコンをクリックするか、Launchpadでアプリ一覧を表示して起動することができる。
また、画面右上にある虫眼鏡アイコンSpotlightで直接アプリ名を検索して起動することも可能。
操作スペース(仮想デスクトップ)の作成と操作
Windows同様、Macでも仮想デスクトップの作成ができる。
Macでは作成した仮想デスクトップを操作スペースと呼ぶ。
まず、【control】+【↑】を押すことで、Mission Controlを開く。
Mission ControlのSpaceバー
各操作スペース一覧や、操作スペース追加ボタンが表示される。
Mission Controlの操作スペースエリア
作成している操作スペースの一覧が表示される。
現在表示している操作スペース上のアプリを他の操作スペースにドラッグ&ドロップで移動することも可能。
操作スペースにマウスオーバーすると×ボタンが表示され、操作スペースを削除することができる。操作スペースの切り替え
【control】+【←】で左の操作スペース、【control】+【→】で右の操作スペースに切り替わる。
各種アプリ共通のボタン
これはマウスオーバーするとなんとなくイメージがつきやすいかもしれない。
赤ボタン
クリックするとウィンドウを閉じる。
動作はアプリによって異なり、赤ボタンでアプリケーションを終了するアプリもあれば、ウィンドウは閉じるがプロセスは生きているアプリもある。
しっかり終了したければ赤ボタンではなく、メニューから終了するか、【⌘】+【Q】で終了させるのが良い。黄ボタン
Windowを最小化し、Dock右のエリアに退避する。
再表示したければDockエリアに移動したアイコンをクリックすれば復活する。緑ボタン
Windowを最大化する。
マウスオーバーの状態だと以下のメニューが表示され、左側いっぱい表示や、右側いっぱい表示など表示方法を選択できる。
よく使う一般的なキーボードショートカットキー
MacのショーカットキーはWindowsに類似している。
Windowsの【Ctrl】が【⌘】に置き換わっているようなイメージに近い。
操作 ショートカットキー 備考 コピー 【⌘】+【C】 ペースト 【⌘】+【V】 切り取り 【⌘】+【X】 プリント 【⌘】+【P】 UNDO 【⌘】+【Z】 REDO 【⌘】+【Shift】+【Z】 Windowsの場合は【Ctrl】+【Y】 全選択 【⌘】+【A】 検索 【⌘】+【F】 保存 【⌘】+【S】 アクティブアプリ切り替え 【⌘】+【tab】 表示されているアプリの左側のアプリを選択したい場合は【⌘】+【Shift】+【tab】。
Windowsの場合は【Alt】+【tab】全画面スクリーンショット 【⌘】+【Shift】+【3】 画面の一部スクリーンショット 【⌘】+【Shift】+【4】 右クリック
MacでもWindows用のマウスが使え、右クリックボタンでメニューが開く。
また【control】を押しながら左クリックでも右クリックメニューが開く。最後に
結構iPhoneを使っていると、MacのUIもそこまで抵抗なく使えると思った。
- 投稿日:2020-12-27T12:54:01+09:00
macでTimeMachineを使わずに増分バックアップする
ターゲット
・macOS Catalina 10.15.7
cronの準備
cronをフルディスクアクセスにする。
1.システム環境設定 > セキュリティとプライバシー > フルディスクアクセス を開く。
2.ロックを解除し、「+」ボタンをクリックする。
3.[⌘ command] + [shift] + [G]を押下し、「/usr/sbin/cron」へ移動する。
4.「cron」が選択されていることを確認し、「開く」をクリックする。
コピー用のスクリプトを作成
手元の環境では、「/Volumes/Cam1」を「/Volumes/Cam1_Backup」にコピーする。
スクリプトはこんな感じ(ファイル名は任意)。cam1_backup.sh#!/bin/zsh echo `date`" Executed Cam1 backup." /usr/bin/osascript -e 'display notification "Running Cam1 backup." with title "Start Cam1 Backup."' cp -r -n /Volumes/Cam1/* /Volumes/Cam1_Backup echo "Finished Cam1 backup." /usr/bin/osascript -e 'display notification "Finished Cam1 backup." with title "Finished Cam1 Backup."' echo "========================================================"コードの説明 その1
以下のコードは、デスクトップに通知を出すコード。
/usr/bin/osascript -e 'display notification "Running Cam1 backup." with title "Start Cam1 Backup."'コード説明 その2
コピーコマンドについて。
cp -r -n /Volumes/Cam1/* /Volumes/Cam1_Backup #cp -r(再帰的に実行) -n(新しい項目のみコピー) /Volumes/Cam1/*(コピー元ディレクトリ) /Volumes/Cam1_Backup(コピー先ディレクトリ)cronの設定
前項で作ったスクリプトを適当なディレクトリに保存。
今回は以下の場所に保存した。/Users/masato/cam_backup1.shターミナルを開いて「crontab -e」を入力しreturn
開いたエディタに以下を入力する。今回は毎日23時に実行する。0 23 * * * /bin/zsh /Users/masato/cam1_backup.sh>>/Users/masato/cam1_backup.log実行時にスクリプトのechoコマンドで出力した文字列を、/Users/masato/cam1_backup.logファイルに追加していく。
cam1_backup.logはこんな感じ。cam1_backup.logTue Dec 22 23:00:00 JST 2020 Executed Cam1 backup. Finished Cam1 backup. ======================================================== Wed Dec 23 23:00:00 JST 2020 Executed Cam1 backup. Finished Cam1 backup. ======================================================== Thu Dec 24 23:00:00 JST 2020 Executed Cam1 backup. Finished Cam1 backup. ======================================================== Fri Dec 25 23:00:00 JST 2020 Executed Cam1 backup. Finished Cam1 backup. ======================================================== Sat Dec 26 23:00:00 JST 2020 Executed Cam1 backup. Finished Cam1 backup. ========================================================完成
これで定期実行されるバックアップの設定ができた。
引用元
- 投稿日:2020-12-27T09:39:07+09:00
3.Mac入門〜画面編(ディスプレイ設定)
前置き
Macbookを初めて使うことになったので、自分の理解をアウトプットするために作成。
環境
- macOS Big Sur 11.1
- MacBook Pro (13-inch)
- デュアルディスプレイ用モニタ BenQ GW2480
ディスプレイ設定画面の表示
画面のAppleアイコン⇨「システム環境設定」⇨「ディスプレイ」を選択する。
ディスプレイの設定画面
MacBook Pro (13-inch)の設定
外部ディスプレイでの設定
デュアルディスプレイ設定
ケーブルでつないでデュアルディスプレイにしたときの位置関係を調整することができる。
2つの画面に同じ内容を表示することができるし、拡張も可能。
2つの画面に同じ内容を表示する場合は、「ディスプレイをミラーリング」にチェックを入れる。
ディスプレイを拡張したい場合は、外部ディスプレイと内蔵ディスプレイの位置関係を調整する。
ディスプレイの絵の部分をドラッグして位置関係を調整できる。