제대로 이해한 것 같진 않은데 대충 흐름만 정리한다.
기록을 해두면, 언젠가 이해해서 이 글을 수정할 수 있지 않을까 기대한다.
위 데이터 기술 동향에서 GL 및 LTCG 부분을 보자.
컴파일하고 링크할 때 프로그램을 시험적으로 돌려보고 그 결과인 데이터를 가지고 코드를 최적화 하는 것이 그 핵심이다. 그 효과는 우수하니까 저렇게 글도 적히는 것이겠지. 그래서 그것을 적용시켜보자.
여기서 GL 설정을 하자.
LTCG (Link Time Code Generation) 은 정적 라이브러리인지 동적 라이브러리인지에 따라서 맨위의 것 하나와 아래 2개 중 택 1로 설정을 하게 된다.
그런데 LTCG 를 사용하면 PDB 파일이 필요없다.
PDB 파일은 디버깅 할 때 사용하는 매핑 파일이다.
breakpoint 등을 처리할 때 exe 내의 binaray code 와 원본 c++ 코드를 매핑할 때 등에 쓰인다.
LTCG 를 사용하면 PDB 파일로 나와야 할 것이 컴파일 결과인 lib 나 dll 파일 내에 들어간다.
그래서 필요없다.
이를 위해선 다음 옵션을 바꿔야한다.
PDB 를 사용안하면 ZI 로 하면 안된다. 이건 위의 MS 문서에 명시적으로 적혀져 있다.
마지막으로 아래 옵션을 MD 계열로 바꿔야한다.
그 이유는 뇌피셜인데, 최적화 과정이 프로그램을 실행하면서 나온 데이터를 가지고 하는 것이기 때문에, 각 lib, dll 에 Heap 이 있어야하기 때문이 아닐까한다.
만약 안바꾸면 에러뜨고 바꾸라고 빨간 글씨가 나올 것이다.
마지막으로 Incremental Linking 을 false 로 처리해야한다.
안해도 되는데 warning 뜬다.
이는 정적 라이브러리에선 관계 없는 이야기.
댓글 없음:
댓글 쓰기