Xcode - Build Configuration

Mobile Programming/IPhone 2014. 7. 1. 20:59

언젠가 정리하겠지 .. ?

일단 링크만.



https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/0-Introduction/introduction.html#//apple_ref/doc/uid/TP40003931-CH1-SW1

mac os 업데이트 후 brew path 가 맞지 않는 경우

개발툴 2014. 7. 1. 20:57

homebrew, mac 유저라면 대부분 사용할 법한 요게 mavericks, 10.9 로 업데이트 한 후에 기존에 brew 로 설치한 모든 패키지들이 정상 동작하지 않게 할 수 있다. 


구글링한 결과 ,


우리의 스택 오버 플로우에 다음과 같은 글이 있고 ,

http://stackoverflow.com/questions/22547304/mac-osx-mavericks-upgrade-clears-usr-local-bin


요약하자면 

가상 환경 변수 경로가 매브릭스부터 변경이 됐고, 

따라서 기존 설치한 brew 패키지들의 경로는 다시 링크할 필요가 있음.


다음 명령어를 통한다..


brew list -1 | while read line; do brew unlink $line; brew link --force $line; done

-> 잘 모르겠지만 실행하면 unlink 하고 link 하고 ...

Unlinking /usr/local/Cellar/autoconf/2.69... 0 links removed

Linking /usr/local/Cellar/autoconf/2.69... 18 symlinks created

Unlinking /usr/local/Cellar/automake/1.14... 0 links removed


....blahblah


brew doctor


사실 이 과정까지 필요한지는 잘 모르겠음 ( 닥터 호출전에 테스트를 해보지 않아서 ) 


'개발툴' 카테고리의 다른 글

python 콘솔등에서 출력 텍스트 컬러  (0) 2014.07.25
Mac Os Terminal Color  (0) 2014.07.24
정규식 - 기본 구문  (0) 2014.07.03
정규식 - 특정 문자열 제외  (1) 2014.07.03
SVN  (0) 2014.06.23

Chapter 4 - 1. Containers and Algorithms, Libraries

Chapter 4. Containers and Algoritms

4.1 Libraries 

프로그래밍 언어에는 라이브러리가 필요하다. 

C++ 의 STL 기능들을 살펴볼 것이다. 


4.1.1 Standard-Library Overview

제공되는 라이브러리는 아래와 같이 분류됨.


* 런타임 언어 지원 ( 할당과 런타임 타입 정보 )

* C standard library ( 타입시스템에 위배하는 것에 대한 최소한의 수정 )

* 문자열과 I/O 스트림 (국제적 문자셋과 지역화 지원을 포함)

* 컨테이너의 프레임 워크 / 알고리즘 

* 숫자 계산

* 정규식 표현

* 동시성 프로그래밍을 위한 지원

* 템플릿 메타 프로그래밍을 위한 유틸들 ( type traits ), 제네릭 프로그래밍, 제너럴 프로그래밍

* 스마트 포인터 / 가비지 콜렉터

* 특별한 목적의 컨테이너 ( array / bitset / tuple )


라이브러리를 써야하는 이유

* 프로그래머의 수준에 상관없이 유용하다

* 오버헤드 없이 일반적인 형태 제공

* 배우기 쉽고 간단한 사용


4.1.2 The Standard-library Headers and Namespace 

헤더 포함으로 이용가능, std:: prefix


4.2 Strings

문자열 리터럴에서 제공할 수 있는 정보를 보충하기 위한 string 타입을 제공함.

문자열붙이기 (concatenation) 같은 문자열 연산에 용이.

string 은 move 생성자를 가지고 있으므로 긴 문자열이라도 효율적으로 반환 될 수 있음.


String 은 수정가능하므로 = , += , [], substring 연산들이 지원된다.

또 비교 연산도 가능.


4.3 Stream I/O

포맷팅된 캐릭터 인풋과 아웃풋을 iostream 을 통해 지원한다.


4.3.1 Output

모든 빌트인 타입에 대해 출력을 정의해 놓았음. 또 사용자 정의 타입에 대해서도 아웃풋을 정의하기 용이하다.

<< ("put to") 연산자는 ostream 타입의 객체에 대해 사용되며, 출력을 위해 사용된다.

cerr 는 에러 리포팅을, cout 은 표준 출력을 의미.

cout 으로 쓰여진 값은 기본적으로 문자열의 시퀀스로 변환 된다.

즉 cout << 10; 에서 1다음에 0이 있는 문자열의 시퀀스로 노출되게 된다.


캐릭터 상수는 따옴표로 나타내지며 캐릭터는 숫자가 아닌 문자로 취급된다.

int b = 'b'; 

char c = 'c';

cout << 'a' << b << c 

일때 'b' 는 98이므로 다음과 같이 출력됨 a98c


4.3.2 Input

istream 을 입력을 위해 제공. 반대로 >> ("get from") 연산을 포함

공백은 입력을 종료시키므로 라인을 얻기위해서는 getline() 와 같은 별도함수 필요.

개행문자는 버려진다.


확장을 위한 정립된 방식이 존재하기 때문에 먼저 최대 사이즈를 계산할 필요가 없다.


4.3.3 I/O of User-Defined Types

ostream& operator<<(ostream& os, const Entry& e)

{

return os << e.name << e.number ; 

}

와 같이 사용자 정의 타입도 사용가능


비슷하게


istream& operator>>(istream& is, Entry& e)

{

char c,c2;

if (is>>c && c == '{' && is>>c2 )

return is;

else{

is.setf(ios_base::failbit);

return is;

}

}


와 같이 정의된 형식의 입력인지 확인하는 용도로 사용될 수 있다.

is >> c 는 "is 로부터 읽어 c 로 넣는데 성공했는가?" 의 의미를 가진다.

is.get(c) 는 공백을 그냥 넘어가지 않는다. ( 입력한다 )