2010-05-30 5 views
4

F # 프로그램을 바이너리와 소스로 배포하려고합니다. 사용자가 원하는 경우 다시 컴파일 할 수있는 옵션이 있습니다. Windows에서이 작업을 수행하는 방법을 이해합니다. Visual Studio 및 MSBuild에서 이해할 수있는 .fsproj 및 .sln 파일을 제공합니다.F #, Linux and makefiles

Linux에서 C 프로그램의 전통적인 해결책은 makefile입니다. 이것은 gcc가 직접 사용할 수 있는지 여부에 달려 있으며 항상 유용합니다.

F # 컴파일러는 Linux에 설치할 수 있으며 Mono에서 작동하므로 지금까지는 문제가 없습니다. 그러나 내가 알 수있는 한, fsc이 컴파일러를 실행하는 시나리오를 작성하지 않고 대신 명령은 mono ...path.../fsc.exe입니다. 경로가 어떻게 될지 모르겠다는 것 외에는 이것도 좋습니다. 따라서 제 경우 컴파일러를 실행하는 전체 명령은 mono ~/FSharp-2.0.0.0/bin/fsc.exe types.fs tptp.fs main.fs -r FSharp.PowerPack.dll 일 수 있습니다. 단, fsc.exe가 실제로 사용자 컴퓨터에 있을지는 확실하지 않습니다.

메이크 파일 내에서이를 찾을 수있는 방법이 있습니까? 아니면 위의 설명서를 설명하고 자신의 설정에 따라 명령을 수정하는 방법을 사용하는 것이 좋을까요?

+3

는 Aaaand이 왜 .NET 및 크로스 플랫폼을 함께 사용하지 않는 것입니다. – LukeN

+1

어떤 기술 스택이 더 나은 직업이라고 생각하십니까? 아니면 명백하게 부적절한 언어 인 프로젝트라도 C로 되 돌리는 것이 좋습니다. – rwallace

+2

사용자가 다시 컴파일하도록 허용하려는 경우 사용자가 자신의 설치를 위해 경로를 적절히 기입 할 정도로 기술적 인 것으로 가정하는 것이 안전 할 수 있습니까? – kvb

답변

8

autoconf를 사용하지 않으려면 README를 작성하고 프로그램을 컴파일하기위한 도구를 설정하는 방법을 알려주십시오. 예를 들어, binfmt_misc 커널 모듈을 사용하면 시스템이 자동으로 올바른 형식의 파일에 대해 $ PATH에 fsc.exe의 경로를 포함해야하므로 Makefile은 다음 코드와 비슷합니다.

FILES=types.fs tptp.fs main.fs 

target.exe: ${FILES} 
     fsc.exe -o [email protected] ${FILES} -r FSharp.PowerPack.dll 

아니면 사용자가 메이크 변수를 사용하여 컴파일러 가리 키도록 할 수 있습니다 :

MONO=/usr/bin/mono 
FSC=/usr/local/fsharp/bin/fsc.exe 
COMPILER=${MONO} ${FSC} 
FILES=types.fs tptp.fs main.fs 

target.exe: ${FILES} 
     ${COMPILER} -o [email protected] ${FILES} -r FSharp.PowerPack.dll