😽
wWinMain()を静的ライブラリに含めたい
WinMain()
ならコンパイルが通るのに、wWinMain()
だとコンパイルが通らない。
wWinMain()
を記述したソースファイルをtarget_source()
でPUBLIC
にするとコンパイルが通り、実行も問題なくできる。
さらに、そのソースファイルで参照しているヘッダーとモジュールインターフェースもPUBLIC
にする
CMakeLists.txt
find_package(Vulkan REQUIRED)
add_library(${PROJECT_NAME} STATIC)
target_sources(${PROJECT_NAME} PUBLIC main.cpp)
target_sources(
${PROJECT_NAME}
PUBLIC FILE_SET
CXX_MODULES
FILES
Win32Application.ixx)
target_sources(${PROJECT_NAME} PRIVATE Win32Application.cppm)
target_compile_definitions(${PROJECT_NAME} PRIVATE _UNICODE UNICODE)
main.cpp
#include <Windows.h>
#include <tchar.h>
import Win32Application;
_Use_decl_annotations_
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, int nCmdShow)
{
return luna::Win32Application::Run(hInstance, nCmdShow);
}
※ぼやき
なんで_UNICODE
とUNICODE
の2つを定義しないといけないのだろう
ググったらどちらも必要だと解説記事があるのだが、公式ドキュメントがとっちらかっていて正しいかの確認に困る
Discussion