DLL을 대량으로 만들어야 하는 일이 생겨 직접 Visual Studio 에서 DLL 을 빌드하다가 넘후 힘들어서 컴파일 및 링크를 자동으로 해주는 프로그램을 제작하였습니다.
혹시나 그런 일은 없겠지만.. 자동으로 컴파일 및 링크를 해야할 상황이 되면 유용하게 사용할 수 있는 방법이 될 수 있습니다.
먼저 Visual Studio 의 IDE 폴더는 환경변수 PATH에 등록이 되어 있어야 합니다. 왜냐하면 cl.exe 나 link.exe 가 IDE의 DLL을 사용하기 때문이죠.
그 뒤에는 해당 프로젝트 설정값들을 적절하게 argument 로 넣어서 cl.exe 를 호출해주면 됩니다.
예를 들면 아래와 같이 되겠죠.
"C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe" /O2 /GL /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "TEST_EXPORTS" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MT /GS- /Fo"Release\\" /Fd"Release\vc80.pdb" /W3 /nologo /c /Wp64 /Zi /TP
/errorReport:prompt .\test.cpp
/errorReport:prompt .\test.cpp
그런데 ShellExecute 로 실행을 해버리면 콘솔 창이 갑자기 나타났다가 사라져 버려서 컴파일(링크)가 제대로 되었는지 알 방법이 없습니다.
그래서 CreateProcess 로 해줘야 합니다. ^^
CreateProcess로 해줄 경우 PROCESS_INFORMATION 구조체의 hProcess 로 GetExitCodeProcess 를 통해 조회를 하면 에러가 발생했는지 아니면 컴파일이 제대로 수행되었는지 확인 할 수 있습니다.
또한 컴파일시 출력되는 경고나 에러문을 확인해야 할 경우 STARTUPINFO 구조체의 hStdOutput 와 hStdError 에 파이프를 넣어서 확인하면 됩니다.
이 부분은 적당한 예제도 있으니 참고 하시면 됩니다.
P.S. 날씨게 굉장히 무덥습니다. ㅠ_ㅠ 더위 조심하세요.