VSCode + wxWidgets
開発環境の構築中
さて、今回もお気に入りのVSCode + wxWidgetsについてです。
前回はVSCodeでビルドは出来た。ってとこでした。今回は以前制作したCCh(バッテリーの充電制御)アプリ、
danpapa-hry.hateblo.jp
これを移植中ですが、問題が出てくる出てくるw
今回はアイコンの表示についてです。
簡単に言えば、どうやってビルドするのか?ってことですね。
はい、CMakelLists.txtは下記です。(詳細は省きますよーw)
# ////////////////////////////////////////////////////////// set(PROJNAME "test") set(MINGW "C:/CodeBlocks/MinGW/64bit/bin") set(WX_WIDGETS_DIR "C:/CodeBlocks/Library/wxWidgets/64bit") set(USE_RESOURCE 1) #0:NON 1:USE(resource.rc) # ////////////////////////////////////////////////////////// if ("${USE_RESOURCE}" STREQUAL 1) set(RESOURCE ${CMAKE_SOURCE_DIR}/resource.rc) set(RESOURCE_OBJ "${CMAKE_CURRENT_BINARY_DIR}/resource.rc.obj") set(CMAKE_RC_COMPILER ${MINGW}//windres.exe) add_custom_command(OUTPUT "${RESOURCE_OBJ}" COMMAND ${CMAKE_RC_COMPILER} -D GCC_WINDRES -I ${WX_WIDGETS_DIR}/include -I ${WX_WIDGETS_DIR}/lib/gcc_lib/mswu -I C:/CodeBlocks/MinGW/64bit/include -J rc -O coff -i ${RESOURCE} -o ${RESOURCE_OBJ}) endif() if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(PROJNAME "${PROJNAME}-Debug") else() set(PROJNAME "${PROJNAME}-Release") endif() cmake_minimum_required(VERSION 3.0.0) project(${PROJNAME} VERSION 0.1.0) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_FLAGS "-pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall") set(CMAKE_CXX_FLAGS_DEBUG "-g -D__WXDEBUG__") set(CMAKE_CXX_FLAGS_RELEASE "-O2") set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Og -g") include_directories(${CMAKE_SOURCE_DIR}) include_directories(${WX_WIDGETS_DIR}/include) include_directories(${WX_WIDGETS_DIR}/lib/gcc_lib/mswu) link_directories(${WX_WIDGETS_DIR}/lib/gcc_lib) file(GLOB SOURCE_CODE "*.cpp") add_executable(${PROJNAME} WIN32 ${SOURCE_CODE} ${RESOURCE_OBJ}) target_include_directories( ${PROJNAME} PUBLIC ${WX_WIDGETS_DIR}/include ) if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") target_link_libraries( ${PROJNAME} PUBLIC wxmsw31ud wxpngd wxjpegd wxtiffd wxzlibd # wxexpatd # wxmsw31ud_gl # wxregexud # wxscintillad ) else() target_link_libraries( ${PROJNAME} PUBLIC wxmsw31u wxpng wxjpeg wxtiff wxzlib # wxexpat # wxmsw31u_gl # wxregexu # wxscintilla ) endif() target_link_libraries( ${PROJNAME} PUBLIC kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 oleaut32 uuid comctl32 wsock32 odbc32 shlwapi version uxtheme oleacc )
まぁ、適当です。
アイコンファイルはobjファイルにしてからCPPファイルと一緒にビルドするって感じでしょうか?
これで、アプリのアイコンやタスクトレイのアイコンもOKみたいですね。
あ、参考までに開発環境を書いておきます(32bit環境は省略)
・Visual Studio Code(1.41.1) + (拡張)CMake + (拡張)CMake Tools
・MinGW (x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0)
・wxWidgets 3.1.2 CMake&ビルドは下記
mingw32-make -j4 -f makefile.gcc BUILD=release UNICODE=1 SHARED=0 MONOLITHIC=1
mingw32-make -j4 -f makefile.gcc BUILD=debug UNICODE=1 SHARED=0 MONOLITHIC=1
こんなとこでしょうか。
あ、VSCodeの設定は下記です。
(.vscodeの中身、debugやintellisenseで必要かと。。。)
<c_cpp_properties.json>
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:/CodeBlocks/Library/wxWidgets/64bit/include", "C:/CodeBlocks/Library/wxWidgets/64bit/lib/gcc_lib/mswu" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "compilerPath": "D:\\0000_APPS\\CodeBlocks\\MinGW\\64bit\\bin\\gcc.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "clang-x64", "compileCommands": "${workspaceFolder}/build/compile_commands.json" } ], "version": 4 }
<launch.json>
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "gcc.exe build and debug active file", "type": "cppdbg", "request": "launch", // "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "program": "${command:cmake.launchTargetPath}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "D:\\0000_APPS\\CodeBlocks\\MinGW\\64bit\\bin\\gdb.exe", "setupCommands": [ { "description": "gdb の再フォーマットを有効にする", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "gcc.exe build active file" } ] }
<launch.json>
{ "tasks": [ { "type": "shell", "label": "gcc.exe build active file", "command": "D:\\0000_APPS\\CodeBlocks\\MinGW\\64bit\\bin\\gcc.exe", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "D:\\0000_APPS\\CodeBlocks\\MinGW\\64bit\\bin" } } ], "version": "2.0.0" }
まぁ、すべて理解してるわけではないので、説明は出来ませんw
質問されも答えられないと思いますが、コメントはモチベーションに繋がるので、有難く感じます。
さぁ、これで大部分の問題はクリア出来たと感じています。(CodeBlocks → VSCode+wxWidgetsの移行に関して)
まぁ、細かいところはそのうち誰かが解決してくれるでしょう?w
この設定での操作方法
・ビルド&実行 Shift+F5
・ビルド&debug F5
・クリーン Ctrl+Shift+P CMake:クリーン
んー、こんなとこでしょうか?
雑な記事ですが、何かの参考になれば・・・