2015-08-10 3 views
4

Когда я запустил cabal build, cabal проходит процесс компиляции дважды. Поскольку компиляция занимает относительно долгое время (~ 60 секунд), это начинает мешать моему рабочему процессу.Cabal компилирует код дважды

Вот это GHC варианты в моем Кабал файле:

GHC-Options: -O3 -rtsopts -funbox-strict-fields -threaded -Wall -feager-blackholing -fllvm -optlo-O3 
if flag(Eventlog) 
    GHC-Options: -O3 -rtsopts -funbox-strict-fields -threaded -eventlog -Wall 
if flag(Profiling) 
    ghc-prof-options: -O3 -auto-all 
    GHC-Options: -O3 -rtsopts -funbox-strict-fields -threaded -fprof-auto -Wall 
if flag(Dump) 
    GHC-options: -O3 -funbox-strict-fields -Wall -ddump-simpl -dsuppress-module-prefixes -dsuppress-uniques -ddump-to-file 

Выход из cabal build выглядит совершенно нормально, за исключением компиляции перезагружается, как только последний модуль завершает компиляции в первый раз.

[ 1 of 13] Compiling HaObj   (src/HaObj.hs, nothing) 
[ 2 of 13] Compiling Surfaces   (src/Surfaces.hs, nothing) 
[ 3 of 13] Compiling Materials  (src/Materials.hs, nothing) 
[ 4 of 13] Compiling Geometry3  (src/Geometry3.hs, nothing) 
[ 5 of 13] Compiling Triangles  (src/Triangles.hs, nothing) 
[ 6 of 13] Compiling BoundingVolumeHierarchy (src/BoundingVolumeHierarchy.hs, nothing) 
[ 7 of 13] Compiling RayTracer  (src/RayTracer.hs, nothing) 
[ 8 of 13] Compiling BenchmarkScene5 (src/BenchmarkScene5.hs, nothing) 
[ 9 of 13] Compiling BenchmarkScene4 (src/BenchmarkScene4.hs, nothing) 
[10 of 13] Compiling BenchmarkScene3 (src/BenchmarkScene3.hs, nothing) 
[11 of 13] Compiling BenchmarkScene2 (src/BenchmarkScene2.hs, nothing) 
[12 of 13] Compiling BenchmarkScene (src/BenchmarkScene.hs, nothing) 
[13 of 13] Compiling Main    (src/Main.hs, nothing) 
[ 1 of 13] Compiling HaObj   (src/HaObj.hs, nothing) 
[ 2 of 13] Compiling Surfaces   (src/Surfaces.hs, nothing) 
[ 3 of 13] Compiling Materials  (src/Materials.hs, nothing) 
[ 4 of 13] Compiling Geometry3  (src/Geometry3.hs, nothing) 
[ 5 of 13] Compiling Triangles  (src/Triangles.hs, nothing) 
[ 6 of 13] Compiling BoundingVolumeHierarchy (src/BoundingVolumeHierarchy.hs, nothing) 
[ 7 of 13] Compiling RayTracer  (src/RayTracer.hs, nothing) 
[ 8 of 13] Compiling BenchmarkScene5 (src/BenchmarkScene5.hs, nothing) 
[ 9 of 13] Compiling BenchmarkScene4 (src/BenchmarkScene4.hs, nothing) 
[10 of 13] Compiling BenchmarkScene3 (src/BenchmarkScene3.hs, nothing) 
[11 of 13] Compiling BenchmarkScene2 (src/BenchmarkScene2.hs, nothing) 
[12 of 13] Compiling BenchmarkScene (src/BenchmarkScene.hs, nothing) 
[13 of 13] Compiling Main    (src/Main.hs, nothing) 

Я использую Ubuntu 14.04, GHC 7.10.1, междусобойчик установке 1.22.4, 1.22.3 междусобойчик библиотека. Вот ссылка link на репо, если вы заинтересованы в попытке воспроизвести. Я бы рекомендовал запустить cabal build --ghc-options="-fno-code", чтобы уменьшить время сборки на пару секунд.

EDIT: Zeta указал, что это потому, что у меня есть как исполняемый файл ray-tracer, так и эталон bench в моем файле кэша. Есть ли способ построить только один из них? Я пробовал cabal build ray-tracer, но это также создало обе цели. Я также пробовал cabal configure --disable-benchmarks. Есть ли способ выборочно построить только одну из целей без реорганизации структуры файла cabal?

+3

Вы, вероятно, есть несколько целей, например, 'executable' и' benchmark'. IIRC, cabal будет строить как по умолчанию. Быстрый просмотр вашего файла '.cabal' показывает, что это, скорее всего, преступник. Вместо этого вы можете создать библиотеку из ваших файлов, отличных от 'Main.hs', и от этого зависит как исходный, так и исполняемый файлы. – Zeta

+0

Почему вы предпочли бы предлагаемое решение «построить только один из них», в предлагаемое решение Zeta, «создать библиотеку и использовать оба исполняемых файла»? –

+1

IIRC, это что-то вроде 'cabal build exe: ray-tracer'. Я не могу проверить, все еще застрял в GHC 7.8.4. – Zeta

ответ

1

Проводка ответ от комментариев как сообщества-вики:

Синтаксис для создания отдельного компонента есть (например) cabal build exe:ray-tracer

Смежные вопросы