※2018/04/14追記※
初版から1年以上放置してたがコンパイルオプション渡せるように改良(?)
※2018/04/16追記※
gcc7.3だと上書きできずにpermission deniedしたので古い奴を問答無用で削除するようにした
<なんでこんな事したの>
CPad(ryでOpenMPが使いたかっただけ()
高専時代から使ってるので環境変えたくなかったのよね…
<フロントエンドは使いまわすもの>
①GCCとMSYS2を入手する
MinGWかMinGW-w64とMSYS2のインストーラを落としてきてインスコする。
gccの実行ファイル等々とmsysの/usr/binにパスを通す(環境依存)
②CPad(ryを入手する
なんか本家から落とせないらしい
2018年現在で17年前のソフトだもんね…
③↓をコンパイル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
////////////////////////////////////////////////////////////// | |
CPad for Borland C++ Compilerでgccを呼ぶ何か | |
2017/03/28 柏木てるみ | |
////////////////////////////////////////////////////////////// | |
gccとmsysの/usr/binにパスが通ってる事前提で書いてます | |
一応C++の.cppもいけるはず(未確認) | |
2017/03/28 | |
mod.0…自分専用だったのでgccのオプションはキメ打ち(手抜き) | |
2018/04/14 | |
mod.1…CPad(ryのコンパイル時オプションをgccに渡せるようにした(今更) | |
2018/04/16 | |
mod.2…gcc7.3.0で実行ファイルの上書きができずmsysのrmで強引に削除するようにした(のうすじ) | |
*/ | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <unistd.h> | |
int main(int argc, char* argv[]) | |
{ | |
int i=1,n=1; | |
char ext[]=".",input[512],output[512],option[512]={0},strip[512],rem[512]; | |
for(;;n++) | |
{ | |
if(argv[n]==NULL) break; | |
} | |
sprintf(input,"%s",argv[n-1]); | |
for(;;i++) | |
{ | |
sprintf(option,"%s %s",option,argv[i]); | |
if(i==n-2) break; | |
} | |
sprintf(output,"gcc \"%s\" -o \"%s.exe\"%s",input,strtok(argv[n-1],ext),option); | |
sprintf(strip,"strip \"%s.exe\"",argv[n-1]); | |
sprintf(rem,"rm \"%s.exe\"",argv[n-1]); | |
system(rem); | |
system(output); | |
//system(strip); //常時strip使う場合はコメントアウト解除 | |
return 0; | |
} |
実行ファイル→自己責任でどうぞ(64bit専用)
MinGW-w64使ってるせいか-m32するとエラーがひどい
④CPad(ryの設定
「実行」→「設定」→「コンパイラのパス」に③で作った(落とした)実行ファイルを指定する

bcc32.exeじゃありません、とかなんとかエラー出ても無視。
「実行」→「設定」→「実行」→「コンパイル時のパラメータ(C)」にGCCのコンパイルオプションを記述する

私はよくわからないので-Wall -lstdc++ -fopenmp -O3 -ftree-vectorizer-verbose=2 -march=nativeだけ記述してます(-mtune=nativeって効くの?)
なお-Wall有効だとBCCで通る程度のエラーでも蹴られます。
⑤普通にmake&実行
gcc7.3に管理者権限付与しても上書きできないばかりか標準出力が虚空に消えてCPad側に表示されない()
上書きできねぇなら消してしまえ!とrmで削除するようにしました(危険)
このためだけにmsysが必要ですがremove()でもsystem()からdel呼んでもerrno=13だったんだもん…
ファイルを右クリック→「プロパティ(R)」→「互換性」→「管理者としてこのプログラムを実行する」のチェックボックスをON
⑥動かないんだけど?
gccとrmとstripにパスが通ってても動かない場合は諦めよう。
0 件のコメント:
コメントを投稿