【01】安装与配置 C++/Visual Studio 22 | PDCurses on Windows

发布时间 2023-11-07 17:22:32作者: Leonadey

参考:

https://www.cnblogs.com/yapingxin/p/15936414.html

实践、概括、优化:

  1. 编译生成
    1. 下载源码,解压后进入其中的wincon目录;
    2. 如果需要为多个Platform(x86和x64)以及多个分支(Debug和Release),多复制备份几个wincon文件夹,分别命名好;
    3. 编辑其中的Makefile.vc文件,在11行下新建一行,写入:
      PLATFORM = ...

      其中“...”替换为“X86”则编译32位相应的文件;替换为“X64”则编译64位相应的文件。

    4. 编译32位文件时,搜索并打开“x86 Native Tools Command Prompt for VS2022”;编译64位文件时,则使用“x64 Native Tools Command Prompt for VS2022”;
    5. 打开工具,输入以下命令:
      nmake -f Makefile.vc WIDE=Y UTF8=Y DLL=Y DEBUG=Y
      1. 添加“WIDE=Y”则产生支持宽字符的文件,否则不支持;
      2. 添加“UTF8=Y”则产生支持UTF-8的文件,否则不支持;
      3. 添加“DLL=Y”则产生相应的DLL文件,否则不产生;
      4. 添加"DEBUG=Y"则产生用于Debug的文件,否则产生用于Release分支的文件。
  2. 设置项目
    1. 按照结构储存获得的文件和源码根目录下的.H文件:
      ./
      |
      |-includes/
      |     curses/
      |         curses.h
      |         curspriv.h
      |         panel.h
      |-dll/
      |     Win32/
      |         Debug/
      |             pdcurses.dll
      |         Release/
      |             pdcurses.dll
      |     x64/
      |         Debug/
      |             pdcurses.dll
      |         Release/
      |             pdcurses.dll
      |-lib/
      |     Win32/
      |         Debug/
      |             pdcurses.lib
      |         Release/
      |             pdcurses.lib
      |     x64/
      |         Debug/
      |             pdcurses.lib
      |         Release/
      |             pdcurses.lib
      展开树状结构图

      建议将所有配置的库都统一存在一个固定的文件夹。之后安装的库也以同样的方式分门别类储存在相应文件夹下。

    2. 在Visual Studio 2022中创建一个新的C/C++控制台项目,打开项目属性,设置将“配置”设置为“所有配置”,“平台”设置为“所有平台”;
    3. VC++中,在“外部包含目录”中添加刚刚第1步中创建的include文件夹的路径;
      [ROOT]\include
      将“[ROOT]”替换为刚刚创建的文件夹根目录。
    4. 链接器-常规中,在“附加库目录”中添加刚刚第1步中创建的lib文件夹的路径;
      [ROOT]\lib\$(PLatform)\$(Configuration)

      将“[ROOT]”替换为刚刚创建的文件夹根目录,其中$(Platform)和$(Configuration)是宏,在编译时能自动切换X86/X64以及Debug/Release;

    5. 链接器-输入中,在“附加依赖项”中添加“pdcurses.lib”;
    6. 生成事件-生成后事件中,在命令中添加:
      copy "$(CPPCOMP)\dll\$(Platform)\$(Configuration)\pdcurses.dll" "$(TargetDir)"
    7. 在写.CPP代码时,先宏定义PDC_DLL_BUILD,然后再包含curses/curses.h。
  3. 测试
    1. 新建源代码文件,写入以下内容:
      #define PDC_DLL_BUILD
      #include <pdcurses/curses.h>
      #include <string>
      
      int main() {
      
          initscr();
          cbreak();
          noecho();
          curs_set(0);
      const char* message = "Press any key to get flash-banged!";
          const char* title = "Test PDCurses!";
      
          PDC_set_title(title);
      
          do {
              mvprintw(LINES / 2, (COLS - (int)strlen(message)) / 2, message);
              refresh();
      
              getchar();
              flash();
          } while (1);
      
          endwin();
      
          return 0;
      }

      编译通过后产生窗口,按任意键可使全屏闪动,则配置成功。