Libsass: libsassをWindowsでコンパイルする際の問題

作成日 2016年07月27日  ·  9コメント  ·  ソース: sass/libsass

私はSprocketsのオープンソースメンテナーです。 sassc(libsass)をネイティブでサポートしようとしています。PRは次のとおりです: httpshttps ://github.com/sass/sassc-ruby/issues/18#issuecomment-235334834。

それが背景です。

私はsassc-rubygemのappveyorでlibsassをコンパイルするのに助けを求めるためにここにいます。 これは、言うまでもなく「問題」ではなく、要求です。 スプロケットユーザー向けのlibsassをサポートする以外に、多くの見返りを提供することはできません。配達用ピザを購入することもできます(完全に深刻です。これは以前に行ったことがあります)。 sassc-rubyをappveyorでlibsassをコンパイルできる場所に移動するのに助けが必要です。

私はその問題についていくつかのことを試みましたが、私は主に暗闇の中で撮影しています。 現在のmakefileは、構文について不平を言っているため、 nmakeインストールされません。 このプロジェクトのappveyor.ymlを見ましたが、十分に複雑に見えます。何が起こっているのか完全にはわかりません。 WindowsのVMをローカルにインストールしようとしましたが、 mingw32-makeなく、 msbuildコマンドが失敗すると問題が発生しました。

> msbuild win/libsass.sln

私に与える:

Windowsでsassc-rubyをテストするためにlibsassをコンパイルするための最善の方法について何かアイデアはありますか? どんな助けでも大歓迎です。

ps深刻な🍕

Discussion - Question

全てのコメント9件

あなたはピザで私を持っていました。 しかし、真剣に私はこれがスプロケットで起こっているのを見るのを楽しみにしています。 @ am11常駐のWindowsエキスパートとして、何が起こっているのか考えがありますか?

msbuild win / libsass.sln

PATHこのMSBuildがインストールしたVSのバージョンに対応していることが確実な場合(つまり、 msbuild /version実行することにより)、デバッグ構成でLibSassをビルドするにはこのコマンドで十分です。 コマンドに/p:Configuration=Releaseを渡すと、リリース構成で共有ライブラリが構築されます。 ビルドドキュメントに従って絶対パスを使用してMSBuildを呼び出すこともできます//github.com/sass/libsass/blob/master/docs/build-with-visual-studio.md#from -powershell

それでも同じ問題が発生する場合、GoogleはエラーコードTRK0005に対して次の回避策を返します。
https://blogs.msdn.microsoft.com/deva/2015/03/24/after-migration-vs-2013-c-project-throws-error-trk0005-failed-to-locate-cl-exe-the- system-cannot-find-the-file-specified /

ところで、ローカルビルドボックスがウィンドウのステータスなどをテストするため。 VSが必要ない場合は、VC用のビルドツールをインストールして、コマンドラインから厳密にC / C ++プロジェクトをコンパイルできます。すばらしいGUIはまったくありません: //landinghub.visualstudio.com/visual-cpp-build -ツール

今このコメントにたどり着きます。 これを試してみます。 トンありがとう! 問題を更新し続けます。

また、そもそもWindowsのサポートにも感謝します。 それは大きな責任であり、Windows互換パッチを作成しなければならなかったことが数回あり、そこでの経験がある人には感謝しています。

ちなみに、makefileにはウィンドウ固有のコードが含まれているようです: https

こんにちは、サイドノートに関して:コードはMinGW / Cygwin Makefileサポート用であり、 @ mgreterはおそらくそれを確認できると

おそらく、ある時点でCMakeに切り替えて、基盤となるビルドシステムをカプセル化することができます。 ただし、最初は手書きのMakefileファイルとvcxprojファイルが好まれましたが、それがダウンストリームコンシューマーに負担をかけている場合は、CMakeを調べる必要があります。 @mgreterは、ビルドシステムの分野で大きな努力を払っています。

私は休暇中で、あと6日間、コンピューターの近くに行くのを控えています。しかし、それでもここにいます! 😄私はスプロケットの開発に追いつき、貢献しようと思います。 私はこの宝石をRails2xで使用していましたが、まだ背が高いのを見てうれしかったです。 @schneemsの努力に感謝します! 👍

ねえ、私は休暇のために投稿を控えようとしています(私は本当にgithubにOOOまたはサイレント機能があればいいのにと思います)。 留守中に返信する心配はありません。

あなたのアドバイスは素晴らしく、うまくいきました。また、このドキュメントhttps://github.com/sass/libsass/blob/master/docs/build-on-windows.md (遅すぎ

Rubyについて何も知る必要はないと思いますが、最後の1つを手伝ってもらえるかもしれません。 作成したdllが機能するか、有効であるかを確認する方法はありますか?

戻ってきたら教えてください。休暇を楽しんでいることを願っています。

@schneemsは、状況が良くなっていると聞いて良かったです。 プルリクエストでこれをトラブルシューティングするために必要なすべての情報を提供していただきありがとうございます-これは非常に便利です。 Visual Studioの代わりにMinGWツールキットを使用してlibsassをビルドしてみてください。 コメントは適切な場所に残しました。

@ schneems 、DevKitのドキュメントを見つけました: http//github.com/oneclick/rubyinstaller/wiki/Development-KitとそれがMinGWに基づいているという事実。

次に、Ruby 2.3.0とDevKitをローカルVMにインストールし、PATHにC:\tools\ruby23\devkit\binC:\tools\ruby23\devkit\mingw\binを追加しました。

その後、 https

diff --git a/lib/sassc/native.rb b/lib/sassc/native.rb
index 261daba..b52b0c2 100644
--- a/lib/sassc/native.rb
+++ b/lib/sassc/native.rb
@@ -6,12 +6,7 @@ module SassC

     spec = Gem.loaded_specs["sassc"]
     gem_root = spec.gem_dir
-    if RUBY_PLATFORM =~ /mswin|mingw/
-      libsass_path = "#{gem_root}/ext/libsass/win/bin/libsass.dll"
-    else
-      libsass_path = "#{gem_root}/ext/libsass/lib/libsass.so"
-    end
-    ffi_lib libsass_path
+    ffi_lib "#{gem_root}/ext/libsass/lib/libsass.so"

     require_relative "native/sass_value"

diff --git a/lib/tasks/libsass.rb b/lib/tasks/libsass.rb
index 3542d8f..e439820 100644
--- a/lib/tasks/libsass.rb
+++ b/lib/tasks/libsass.rb
@@ -20,7 +20,7 @@ namespace :libsass do
     make_program = ENV['MAKE']
     make_program ||= case RUBY_PLATFORM
                      when /mswin|mingw/
-                       'msbuild /m:4 /p:Configuration=Release win/libsass.sln'
+                       'make lib/libsass.so'
                      when /(bsd|solaris)/
                        'gmake lib/libsass.so'
                      else

Windows 10 x64のPowerShellで$CC="gcc" ; bundle exec rake testを実行すると、次の結果が得られました。

Run options: --seed 1950

# Running:

********************************S*************************

Fabulous run in 0.174091s, 333.1591 runs/s, 539.9475 assertions/s.

58 runs, 94 assertions, 0 failures, 0 errors, 1 skips

AppVeyorスクリプトを変更する必要はないと思います。 _たぶん_次のようにCCを追加する必要があります。

environment:
  global:
    CC: gcc
  matrix:
  ..

@schneems上記の@ am11による情報はあなたの問題を解決しますか?

遅れて申し訳ありません。 私はこのプロジェクトから引き離され続けています。 問題が詰まらないように、今はこれを閉じます。 助けてくれてありがとう。 私はすぐにこれに戻ることを望んでいます。

このページは役に立ちましたか?
0 / 5 - 0 評価