2015/03/31
VTK 6.2 빌드하기
VTK를 빌드하기 위해서는 kitware에서 제공하는 Cmake 툴이 필요하다.
Cmake 툴을 실행하고 Source Code 경로에 VTK 6.2 버전의 경로를 설정한다.
그리고 binaries 경로는 Visual Studio project가 생성될 경로이다. 적당한 경로를 설정하고 "Advanced" 옵션을 선택하여 모든 옵션을 볼 수 있도록 한다.
그리고 "Configure"버튼을 선택하여 Configuration을 진행한다.
처음 진행을 하면 경로가 없는 경우 경로을 생성한다는 메시지 박스가 출력이 된다.
그리고 프로젝트를 생성하기 위한 컴파일러 버전을 선택하는 대화상자가 나타난다.
컴파일러를 선택하고 Configuration을 진행하면 옵션 리스트가 갱신이 되고 모든 옵션이 붉은색 하이라이트로 표시 된다.
기본적으로 아래 언급된 옵션들에 대하여 사용 여부를 선택 한다.
"BUILD_SHARED_LIBS"
이 옵션은 라이브러리를 Dynamic으로 할 것인지 Static으로 할 것인지 설정하는 옵션으로 이 옵션을 선택하면 Dynamic DLL 이 생성하는 프로젝트가 만들어지고 그렇지 않은 경우 Static DLL을 생성하는 프로젝트가 만들어 진다.
"BUILD_EXAMPLES"
예제 프로젝트를 생성할지 여부를 선택하는 것으로 이를 선택하면 생성된 프로젝트의 빌드 시간이 길어진다. (선택하지 않는 것이 좋다.)
"BUILD_TESTING"
테스트 프로젝트 생성 여부로 BUILD_EXAMPLES 와 같이 프로젝트의 빌드 시간에 많은 영향을 준다.(선택하지 않는 것이 좋다.)
"CMAKE_INSTALL_PREFIX"
생성될 프로젝트 중 install project를 빌드할 경우 최종 결과물이 복사될 경로이다. 빌드하는 PC에서만 사용하는경우 기본값(Program FIles/VTK)으로 두어도 되지만 추후 다른 프로젝트에 쓰고 이동을 하는 경우에 활용하기 위해 별도의 경로를 지정하였다.
"Module_vtkGUISupportMFC"
MFC의 GUI를 지원하기 위해 이 옵션을 선택한다.
옵션 설정을 마치고 "Configuration"을 다시 진행을 하면 "BUILD_TESTING"옵션을 해제한 경우 "...vtkTesting..." 옵션 몇 가지가 붉은색으로 표시가 되는데 이는 다시 "Configuration"을 진행하면 사라진다.
에러(붉은색 하이라이트 옵션)이 없음을 확인하고 "Generate"를 선택하면 binaries 경로도 지정된 곳에 프로젝트가 생성이 된다.
프로젝트 파일 중 VTK.sln 파일을 열어서 ALL_BUILD를 Debug와 Release를 빌드하면 필요한 파일들이 생성이 된다. 추가로 install 프로젝트를 빌드하는 경우 "CMAKE_INSTALL_PREFIX" 경로에 bin, include, lib 폴더가 생성이 되고 관련 파일들이 이 곳으로 복사되어 진다.
참고로 Visual Studio 2013 버전 이상을 사용하는 경우 MBCS 라이브러리를 추가로 설치하고 프로젝트를 빌드해야 한다. Visual Studio 2013 버전부터는 MBCS 라이브러리가 배제된 상태로 제공이 된다. VTK 모든 프로젝트를 Unicode로 설정하여 빌드해 보았는데 무수히 많은 에러를 토해내어서 포기 하였다.
Multibyte MFC Library for Visual Studio 2013
이제 빌드를 마쳤고 하나씩 공부해 나갈 차례이다.
Original Post : http://neodreamer-dev.tistory.com/737
2015/03/25
Visual Studio 2012에서 Feature Pack의 변화
아래 내용은 변경사항 중 MFC와 ATL 라이브러리 관련 변경 사항이다.
MFC및 ATL 라이브러리 변경사항 보기
Removed Fusion support (afxcomctl32.h); therefore, all methods that are defined in afxcomctl32.h have been removed. Header files afxcomctl32.h and afxcomctl32.inl have been deleted.
Changed the name of CDockablePane::RemoveFromDefaultPaneDividier to CDockablePane::RemoveFromDefaultPaneDivider.
Changed the signature of CFileDialog::SetDefExt to use LPCTSTR; therefore, Unicode builds are affected.
Removed obsolete ATL tracing categories.
Changed the signature of CBasePane::MoveWindow to take a const CRect.
Changed the signature of CMFCEditBrowseCtrl::EnableBrowseButton.
Removed m_fntTabs and m_fntTabsBold from CMFCBaseTabCtrl.
Added a parameter to the CMFCRibbonStatusBarPane constructors. (It is a default parameter, and so it is not source-breaking.)
Added a parameter to the CMFCRibbonCommandsListBox constructor. (It is a default parameter, and so it is not source-breaking.)
Removed the AFXTrackMouse API (and related timer proc). Use the Win32 TrackMouseEvent API instead.
Added a parameter to the CFolderPickerDialog constructor. (It is a default parameter, and so it is not source-breaking.)
CFileStatus structure size changed: The m_attribute member changed from BYTE to DWORD (to match the value that's returned from GetFileAttributes).
CRichEditCtrl and CRichEditView use MSFTEDIT_CLASS (RichEdit 4.1 control) instead of RICHEDIT_CLASS (RichEdit 3.0 control) in Unicode builds.
Removed AFX_GLOBAL_DATA::IsWindowsThemingDrawParentBackground because it is always TRUE on Windows Vista, Windows 7, and Windows 8.
Removed AFX_GLOBAL_DATA::IsWindowsLayerSupportAvailable because it is always TRUE on Windows Vista, Windows 7, and Windows 8.
Removed AFX_GLOBAL_DATA::DwmExtendFrameIntoClientArea. Call Windows API directly on Windows Vista, Windows 7, and Windows 8.
Removed AFX_GLOBAL_DATA::DwmDefWindowProc. Call Windows API directly on Windows Vista, Windows 7, and Windows 8.
Renamed AFX_GLOBAL_DATA::DwmIsCompositionEnabled to IsDwmCompositionEnabled to eliminate name collision.
Changed identifiers for a number of MFC internal timers and moved the definitions to afxres.h (AFX_TIMER_ID_*).
Changed the signature of OnExitSizeMove method to agree with the ON_WM_EXITSIZEMOVE macro:
CFrameWndEx
CMDIFrameWndEx
CPaneFrameWnd
Changed the name and signature of OnDWMCompositionChanged to agree with the ON_WM_DWMCOMPOSITIONCHANGED macro:
CFrameWndEx
CMDIFrameWndEx
CPaneFrameWnd
Changed the signature of OnMouseLeave method to agree with the ON_WM_MOUSELEAVE macro:
CMFCCaptionBar
CMFCColorBar
CMFCHeaderCtrl
CMFCProperySheetListBox
CMFCRibbonBar
CMFCRibbonPanelMenuBar
CMFCRibbonRichEditCtrl
CMFCSpinButtonCtrl
CMFCToolBar ReplaceThisText
CMFCToolBarComboBoxEdit
CMFCToolBarEditCtrl
CMFCAutoHideBar
Changed the signature of OnPowerBroadcast to agree with the ON_WM_POWERBROADCAST macro:
CFrameWndEx
CMDIFrameWndEx
Changed the signature of OnStyleChanged to agree with the ON_WM_STYLECHANGED macro:
CMFCListCtrl
CMFCStatusBar
Renamed the internal method FontFamalyProcFonts to FontFamilyProcFonts.
Removed numerous global static CString objects to eliminate memory leaks in some situations (replaced with #defines), and the following class member variables:
CKeyBoardManager::m_strDelimiter
CMFCPropertyGridProperty::m_strFormatChar
CMFCPropertyGridProperty::m_strFormatShort
CMFCPropertyGridProperty::m_strFormatLong
CMFCPropertyGridProperty::m_strFormatUShort
CMFCPropertyGridProperty::m_strFormatULong
CMFCPropertyGridProperty::m_strFormatFloat
CMFCPropertyGridProperty::m_strFormatDouble
CMFCToolBarImages::m_strPngResType
CMFCPropertyGridProperty::m_strFormat
Changed the signature of CKeyboardManager::ShowAllAccelerators and removed the accelerator delimiter parameter.
Added CPropertyPage::GetParentSheet, and in the CPropertyPage class, call it instead of GetParent to get the correct parent sheet window, which may be the parent or a grandparent window to CPropertyPage. You might have to change your code to call GetParentSheet instead of GetParent.
Fixed unbalanced #pragma warning(push) in ATLBASE.H, which caused warnings to be disabled incorrectly. Those warnings are now enabled correctly after ATLBASE.H has been parsed.
Moved D2D-related methods from AFX_GLOBAL_DATA to _AFX_D2D_STATE:
GetDirectD2dFactory
GetWriteFactory
GetWICFactory
InitD2D
ReleaseD2DRefs
IsD2DInitialized
D2D1MakeRotateMatrix
Instead of calling, for example, afxGlobalData.IsD2DInitialized, call AfxGetD2DState->IsD2DInitialized.
Removed obsolete ATL*.CPP files from the \atlmfc\include\ folder.
Moved afxGlobalData initialization to on-demand instead of at CRT initialization time, to satisfy DLLMain requirements.
Added the RemoveButtonByIndex method to the CMFCOutlookBarPane class.
Corrected CMFCCmdUsageCount::IsFreqeuntlyUsedCmd to IsFrequentlyUsedCmd.
Corrected several instances of RestoreOriginalstate to RestoreOriginalState (CMFCToolBar, CMFCMenuBar, CMFCOutlookBarPane).
Removed unused methods from CDockablePane: SetCaptionStyle, IsDrawCaption, IsHideDisabledButtons, GetRecentSiblingPaneInfo, andCanAdjustLayout.
Removed CDockablePane static member variables m_bCaptionText and m_bHideDisabledButtons.
Added an override DeleteString method to CMFCFontComboBox.
Removed unused methods from CPane: GetMinLength and IsLastPaneOnLastRow.
Renamed CPane::GetDockSiteRow(CDockingPanesRow *) to CPane::SetDockSiteRow.
자세한 정보를 아래 링크를 확인 해보면 된다.
https://msdn.microsoft.com/en-us/library/vstudio/bb531344(v=vs.110)
Original Post : http://neodreamer-dev.tistory.com/736
2015/03/20
문자열 날짜를 time_t 로 변환하기
std::wistringstream ss(L"2015-03-20 14:13:27");
<
std::tm dt;
ss >> std::get_time( &dt, L"%Y-%m-%d %H:%M:%S" );
std::time_t t = std::mktime(dt);
Original Post : http://neodreamer-dev.tistory.com/735