Es gibt einen Paket-Clipper http://hackage.haskell.org/package/clipper, den ich verwenden möchte, um den Schnittpunkt komplexer Polygone zu erkennen. Es ist ein FFI zu einem C++ Paket. Es funktioniert gut, wenn SieKompilieren des Haskell-Pakets mit C++ und Stack/CABAL
cabal build --with-gcc=/usr/bin/g++
laufen, aber sonst nicht. Gibt es eine Möglichkeit, diese GCC-Option in die Cabal-Datei einzufügen oder mein Stack-Projekt anderweitig dazu zu bringen, die Abhängigkeit mit g ++ aufzubauen?
Einstellung der $ PATH aus irgendeinem Grund nicht funktioniert:
% cabal build --with-gcc=g++
Building clipper-0.0.1...
Preprocessing library clipper-0.0.1...
[1 of 1] Compiling Algebra.Clipper (dist/build/Algebra/Clipper.hs, dist/build/Algebra/Clipper.o)
In-place registering clipper-0.0.1...
% PATH=$(pwd):$PATH gcc
g++: fatal error: no input files
compilation terminated.
% PATH=$(pwd):$PATH cabal build
Building clipper-0.0.1...
Preprocessing library clipper-0.0.1...
In file included from Clipper.hsc:27:0:
cbits/clipper.hpp:29:18: fatal error: vector: Dosiero aŭ dosierujo ne ekzistas
compilation terminated.
compiling dist/build/Algebra/Clipper_hsc_make.c failed (exit code 1)
command was: /usr/bin/gcc -c dist/build/Algebra/Clipper_hsc_make.c -o dist/build/Algebra/Clipper_hsc_make.o -fno-stack-protector -D__GLASGOW_HASKELL__=710 -Dlinux_BUILD_OS=1 -Dx86_64_BUILD_ARCH=1 -Dlinux_HOST_OS=1 -Dx86_64_HOST_ARCH=1 -Icbits -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/usr/local/haskell/ghc-7.10.2-x86_64/lib/ghc-7.10.2/base_GDytRqRVSUX7zckgKqJjgw/include -I/usr/local/haskell/ghc-7.10.2-x86_64/lib/ghc-7.10.2/integ_2aU3IZNMF9a7mQ0OzsZ0dS/include -I/usr/local/haskell/ghc-7.10.2-x86_64/lib/ghc-7.10.2/include -I/usr/local/haskell/ghc-7.10.2-x86_64/lib/ghc-7.10.2/include/
In ähnlicher Weise die Setup.hs ändern, wie vorgeschlagen, durch das folgende @ErikR nicht helfen.
% runghc Setup.hs build
"Hello, I am running"
fomg
BuildFlags
{ buildProgramPaths = []
, buildProgramArgs = []
, buildDistPref = Flag "dist"
, buildVerbosity = Flag Normal
, buildNumJobs = NoFlag
, buildArgs = []
}
fimg
BuildFlags
{ buildProgramPaths = [ ("gcc" , "/usr/bin/g++") ]
, buildProgramArgs = []
, buildDistPref = Flag "dist"
, buildVerbosity = Flag Normal
, buildNumJobs = NoFlag
, buildArgs = []
}
Building clipper-0.0.1...
Preprocessing library clipper-0.0.1...
In file included from Clipper.hsc:27:0:
(etc)
Beachten Sie, dass es an der buildHook Linie abstürzt, so um die Fahnen gedruckt zu bekommen ich um die Reihenfolge zu ändern benötigt.
Leider haben Ihre Lösungen nicht funktioniert. Ich habe meiner Frage einige Kommentare hinzugefügt, um meine Erfahrung zu beschreiben. – Tristan
Danke, dieser einfachere Vorschlag funktioniert. – Tristan