저는 종종 앱을 빌드하는 데 사용하는 것과 동일한 컴퓨터에서 실행되는 개발 서버와 함께 iOS 프로젝트에서 작업합니다. 일반적인 시나리오는 http://localhost:3000
에서 실행중인 레일 앱을 보유하고 있으며 기기에서 테스트 중입니다. 장치에서 테스트하려면 내 IP 주소가 필요하므로 내 응용 프로그램이 로컬 네트워크의 개발 서버와 통신 할 수 있습니다.Xcode에서 동적 선행 처리기 매크로 만들기
GCC_PREPROCESSOR_DEFINITIONS
을 사용하여 일부 환경 변수를 전 처리기 매크로로 설정할 수 있다는 것을 알고 있고, bash 스크립트에서 ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'
을 실행하여 컴퓨터의 IP 주소를 생성 할 수 있다는 것을 알고 있습니다. 내가 원하는 무엇
는 '@"http://${BUILD_MACHINE_IP_ADDRESS}:3000"'
같은 값을 사용하여 GCC_PREPROCESSOR_DEFINITIONS
에 MY_SERVER_URL
를 정의하지만, 내가 무엇을 알아낼 수있는 것은 위의 ifconfig
스크립트를 사용하여 ${BUILD_MACHINE_IP_ADDRESS}
을 설정하는 방법입니다.
실행 스크립트 빌드 단계를 사용하여 구성 파일을 편집하는 것으로 생각했지만 변경 사항의 영향은 자극적입니다. 예를 들어, IP 주소가 자주 변경되어 충돌을 일으키기 때문에 소스 제어에 파일을 포함시키지 않을 것입니다. 하지만 응용 프로그램이 액세스 할 수 있도록 프로젝트 파일에 포함시켜야합니다. 이렇게하면 프로젝트를 빌드하는 데 필요한 파일이 생성되지만 소스 컨트롤에는 포함되지 않습니다. 이는 추한 것입니다.
실행 스크립트 빌드 단계에서 export BUILD_MACHINE_IP_ADDRESS=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}`
을 실행 해 보았지만 결과가 나오지 않았습니다.
어때? - BUILD_MACHINE_IP_ADDRESS = $ (ifconfig | grep -E 'inet. [0-9]'| grep -v '127.0.0.1'| awk '(print $ 2)') –
@Jaypal 예 내가 뭘하고 싶은지 모르겠지만 컴파일 시간에 변수를 사용할 수있게하기 위해 어디에서 * 할 것인가. –
명령 행에서 변수를'export '하거나 프로파일 파일에 추가하여 터미널을 열 때마다 변수를 전역 적으로 사용할 수 있도록 할 수 있습니다. –