cygwin上のcl.exe(MSVC)の使い方について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
chibago

cygwin上のcl.exe(MSVC)の使い方について

#1

投稿記事 by chibago » 14年前

皆様、お世話になっております。
linuxで開発したプログラムをmingwでwindowsバイナリを作ったのですが、
I/O遅いためにMSVC(cl.exe)でコンパイルし直そうと思っております。
ただし、gnu make を使いたいのでcygwin上で悪戦苦闘しているところです。
(今更nmakeを学ぶ気にはなれませんので)

とりあえず、同じディレクトリにソースがあるケースについては問題なくクリアできました。
しかし、階層構造にした際には以下の様な問題に遭遇しております。
以下メークファイルの一部です。

コード:

TestFunc.obj: /home/chibago/work/cpp_test/test/TestFunc.cpp
	cl -c /home/chibago/work/cpp_test/test/TestFunc.cpp  $(CXXFLAGS) $(INCLUDES) 
これを実行すると
cl : コマンド ライン warning D9002 : 不明なオプション '/home/chibago/work/cpp_test/test/TestFunc.cpp' を無視します
cl : コマンド ライン error D8003 : ソース ファイル名がありません

となります。

clのオプションがスラッシュから始まる為、絶対パスで書かれたソースファイル名がオプションと誤認されているようです。

なにか回避する方法はございませんでしょうか。

あきらめたほうがよろしいようでしたらそうしたいと思います。

よろしくお願いします。

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: cygwin上のcl.exe(MSVC)の使い方について

#2

投稿記事 by YuO » 14年前

単純に二重引用符で囲めばよいのでは?

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: cygwin上のcl.exe(MSVC)の使い方について

#3

投稿記事 by beatle » 14年前

コード:

TestFunc.obj: /home/chibago/work/cpp_test/test/TestFunc.cpp
    cl -c c:/path/to/home/chibago/work/cpp_test/test/TestFunc.cpp  $(CXXFLAGS) $(INCLUDES)
こんな感じに,ドライブ名:/hoge/foo/bar.cと指定すればいけると思いますよ.

chibago

Re: cygwin上のcl.exe(MSVC)の使い方について

#4

投稿記事 by chibago » 14年前

YuO様、beatle様、お返事ありがとうございました。

ご意見を参考に試してみました。

はじめに、二重引用符は駄目でした。

ドライブ名に関してはそれだけでは駄目なようで、
バックスラッシュ(ただし、バックスラッシュと認識させるために、頭にバックスラッシュ(\\)が必要)
まで付けるといけるようでした。

これを考えると、環境変数で開発フォルダーのルートパスを渡して、
それに追加してソースの場所を指定するようなことは出来ないのだと推測できます。

ちょっと使い勝手は悪いのですが、我慢するしかなさそうです。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: cygwin上のcl.exe(MSVC)の使い方について

#5

投稿記事 by ISLe » 14年前

cygpathというWindowsパスとCygwinパスを変換するツールがありますけど。

コード:

TestFunc.obj: /home/chibago/work/cpp_test/test/TestFunc.cpp
	cl -c `cygpath -w $<` $(CXXFLAGS) $(INCLUDES)
上の記述でよさげです。
変換後のWindowsパスに空白が含まれると不具合あるかもしれません。

chibago

Re: cygwin上のcl.exe(MSVC)の使い方について

#6

投稿記事 by chibago » 14年前

ISLe様、
貴重なご情報ありがとうございます。

早速試してみたいと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る