이 방법으로 빌드 해야 나중에 프로그램 컴파일하고 나서 따로 dll을 넣어주지 않아도 되서
배포할 때 꼭 필요한 상황이여서 static 으로 빌드를 하였음.
<준비물>
1. Cmake
2. 빌드하고 싶은 라이브러리
3. Visual Studio
4. 많은 시간 (빌드할 때, 시간이 많이걸림)
다운받은폴더/cmake-3.13.0-rc1-win64-x64/cmake-3.13.0-rc1-win64-x64/bin 에 있는 cmake-gui 파일을 선택하고 관리자 권한으로 실행
1. Source와 Ooutput 폴더를 만듬
2. Source폴더를 만들어주고 거기에 ITK or VTK 압축 푼 파일들 넣어줌위와 같이 라이브러리 소스파일을 불러오고 빌드후 output파일을 넣어줄 폴더를 지정해줌. 꼭 Cmake는 관리자 모드로 실행할 것그 다음 Configure를 누르면 다음 창이 뜨면 그냥 Finish클릭CMake 기본설정은
MD/MDd로 되어있음
MD -> MT
MDd -> MTd
전부
바꿔주면 됨. MD나 MDd는 동적으로 라이브러리 연결하는 방법이라 정적 라이브러리로 하려면 반드시 바꿔줘야함.BUILD_SHARED_LIBS 꼭 체크 해제. 무슨원인인진 잘 모르겠으나. 이걸 체크해제 안했을 시에 에러가 발생해서 그냥 해제해주고 진행하였음.위와 같이 세팅을 다 진행한 후 다시 한번 Configure를 실행위와 같이 Configure를 누르고 나면 위와같이 빨간색으로 체크되어 있는것이 거의 없어짐. 그리고 Generate를 실행Generate를 실행하고 완료가 되면 output 폴더에 다음과 같이 파일들이 생성됨. 이때 ALL_BUILD를 실행
CMake에서 별다른 에러가 없이 잘 끝났다면 Visual Studio를 꼭 관리자 모드로 킨 다음에
프로젝트
안에서 MD/MT
설정을 바꿔주기 위해서는
프로젝트
>>
속성을 킴.구성속성 >> C/C++ >> 코드 생성
런타임
라이브러리 MDd or
MD >> MTd or
MT
이
방법은 솔루션 마다 전부 일일히 해줘야하므로 Cmake로 한꺼번에 바꿔주는 것이 좋다모든
솔루션들 선택한 뒤에
MFC사용에
정적 MFC로 일괄 수정해준다
(다른건 고치지말것)구성에서
Debug와 Release 둘다 수정해준다ALL_BUILD 프로젝트 빌드 해주면됨
Debug와
Release모드 2가지 해야함. 이 때 가장 소요시간이 길고, 뭔가 설정이 하나라도 어긋나면 에러가 발생해서 빌드가 실패함.각각 빌드하기 귀찮으면 빌드>일괄빌드를 눌러서
ALL_BUILD의 Debug/ Release만 선택하여
빌드한다
ALL_BUILD 프로젝트가 끝나면 INSTALL프로젝트로 Debug와 Release 두가지 모두 해준다
이 모든 과정에서 에러가 발생하지 않았다면 정상적으로 라이브러리 빌드가 완료된다.
4년전에 라이브러리 빌드할 당시에는 이렇게 세세하게 설명된 글이 없어서, 엄청난 많은 검색과 삽질을 통해서
나름대로 에러가 나지 않게 빌드한 방법이여서, 중간과정이라도 잘못 선택하게 될까봐 하나하나 진행할때마다
전부 캡쳐를 해서 정리해놨음.
그 당시 한달넘게 너무 힘들게 삽질한 거라 혼자 ppt파일로 저장해놓고 가끔가다 까먹으면 다시 보면서 빌드했던 기억이 난다.