2016-12-12 1 views
5

CFD 코드의 개발/테스트를 위해 Clang (엄격함/경고)과 GCC (성능)를 자주 전환하는 것을 좋아하지만, (예 : NetCDF와 같은) 종속성을 동일한 컴파일러로 컴파일 할 수 있습니다.다른 컴파일러와 동일한 소프트웨어/버전을 나란히 설치하십시오.

나는 브루 소프트웨어 side-by-side 그들 사이 switch의 여러 버전을 설치하는 옵션이 있지만이 비슷한 동일한 소프트웨어 버전을 사용을 할 수 있다는 것을 알고 있지만, (HOMEBREW_CCHOMEBREW_CXX를 설정하여) 다른 컴파일러로 컴파일?

뭔가 같은 (소망 적 사고, 어떻게 든 연타와 GCC 모두 netCDF의 설치 후) :

brew switch netcdf 4.3.3-gcc 
brew switch netcdf 4.3.3-clang 

답변

2

나는이 "당신이 명시 적으로 사용 된 예에서와 같이 서로 다른 버전 번호가있는 경우에만 가능하다고 생각 4.3.3-gcc "및"4.3.3-clang "을 참조하십시오.

버전 번호가 동일하면 빌드에 차이가없고 추출을 구분할 수 없습니다.

또한이 작업을 수행하지 않을 것입니다.

  1. 동일한 라이브러리를 여러 가지 방법으로 컴파일하여 종속성 악몽에 빠지기 시작합니다.
  2. 종속성 충돌입니다. 왜냐하면 당신이 "netcdf"를 바꿔 치기조차도 당신이 모든 것을 다 바꾼다는 것을 어떻게 알 수 있습니까? 같은 컴파일러로 컴파일되지 않으면 나쁜 일이 일어날 수 있습니다. 예를 들어 호출이 이루어지는 방식이나 한 컴파일러에서 다른 컴파일러에서 활성화 된 옵션으로 인해 충돌이 발생할 수 있습니다. 짓다.

이 작업을 수행하지 않는 것이 좋습니다. 너무 번거롭지 않습니다.

하지만 두 개의 빌드 (예 : 테스트 용)가 필요하면 시스템 경로 바깥에있는 격리 된 폴더 트리에 빌드하고 거기에 대해 테스트하십시오. BREW는 비표준 유스 케이스이므로이 문제를 해결하는 가장 좋은 방법은 아닙니다.

+0

* "이 작업을 수행하지 않는 것이 좋습니다. 너무 번거롭 죠"*; 나는 일반적으로 동의 하겠지만,이 경우 의존성 "악몽"은 매우 미미합니다. * "... 그런 다음 외부의 격리 된 나무에 그들을 건축 할 것입니다."*; 이것이 현재 내가하고있는 일이지만 수동으로 패키지를 만드는 것입니다. Homebrew로 처리 할 수 ​​있습니까? 이제는 일반적으로 Homebrew 수식에서 제공하는 빌드 옵션/설정을 복사하여 붙여 넣습니다. – Bart

+0

앞서 언급 한 것처럼 다른 버전 번호 만 사용하십시오. 이제 여러분이 언급 한 컴파일러 변수를 사용하여 컴파일러를 전환 할 때마다 패키지를 다시 빌드 할 수 있습니다. 그러나, 나는 당신이하려고했던 것과 다른 느낌을 가지고 있습니다. Brew는이 사용 사례를 위해 설계되지 않았습니다. –

관련 문제