lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | |
| 2 | |
| 3 | ___ __ _ _ __ ___ ___ |
| 4 | / __| ___ / _` | '__/ _ \/ __| |
| 5 | | (_ |___| (_| | | | __/\__ \ |
| 6 | \___| \__,_|_| \___||___/ |
| 7 | |
| 8 | |
| 9 | How to build c-ares using MSVC or Visual Studio |
| 10 | ================================================= |
| 11 | |
| 12 | |
| 13 | |
| 14 | How to build using MSVC from the command line |
| 15 | --------------------------------------------- |
| 16 | |
| 17 | Open a command prompt window and ensure that the environment is properly |
| 18 | set up in order to use MSVC or Visual Studio compiler tools. |
| 19 | |
| 20 | Change to c-ares source folder where Makefile.msvc file is located and run: |
| 21 | |
| 22 | > nmake -f Makefile.msvc |
| 23 | |
| 24 | This will build all c-ares libraries as well as three sample programs. |
| 25 | |
| 26 | Once the above command has finished a new folder named MSVCXX will exist |
| 27 | below the folder where makefile.msvc is found. The name of the folder |
| 28 | depends on the MSVC compiler version being used to build c-ares. |
| 29 | |
| 30 | Below the MSVCXX folder there will exist four folders named 'cares', |
| 31 | 'ahost', 'acountry', and 'adig'. The 'cares' folder is the one that |
| 32 | holds the c-ares libraries you have just generated, the other three |
| 33 | hold sample programs that use the libraries. |
| 34 | |
| 35 | The above command builds four versions of the c-ares library, dynamic |
| 36 | and static versions and each one in release and debug flavours. Each |
| 37 | of these is found in folders named dll-release, dll-debug, lib-release, |
| 38 | and lib-debug, which hang from the 'cares' folder mentioned above. Each |
| 39 | sample program also has folders with the same names to reflect which |
| 40 | library version it is using. |
| 41 | |
| 42 | |
| 43 | How to install using MSVC from the command line |
| 44 | ----------------------------------------------- |
| 45 | |
| 46 | In order to allow easy usage of c-ares libraries it may be convenient to |
| 47 | install c-ares libraries and header files to a common subdirectory tree. |
| 48 | |
| 49 | Once that c-ares libraries have been built using procedure described above, |
| 50 | use same command prompt window to define environment variable INSTALL_DIR |
| 51 | to designate the top subdirectory where installation of c-ares libraries and |
| 52 | header files will be done. |
| 53 | |
| 54 | > set INSTALL_DIR=c:\c-ares |
| 55 | |
| 56 | Afterwards, run following command to actually perform the installation: |
| 57 | |
| 58 | > nmake -f Makefile.msvc install |
| 59 | |
| 60 | Installation procedure will copy c-ares libraries to subdirectory 'lib' and |
| 61 | c-ares header files to subdirectory 'include' below the INSTALL_DIR subdir. |
| 62 | |
| 63 | When environment variable INSTALL_DIR is not defined, installation is done |
| 64 | to c-ares source folder where Makefile.msvc file is located. |
| 65 | |
| 66 | |
| 67 | How to build using Visual Studio 6 IDE |
| 68 | -------------------------------------- |
| 69 | |
| 70 | A VC++ 6.0 reference workspace (vc6aws.dsw) is available within the 'vc' |
| 71 | folder to allow proper building of the library and sample programs. |
| 72 | |
| 73 | 1) Open the vc6aws.dsw workspace with MSVC6's IDE. |
| 74 | 2) Select 'Build' from top menu. |
| 75 | 3) Select 'Batch Build' from dropdown menu. |
| 76 | 4) Make sure that the sixteen project configurations are 'checked'. |
| 77 | 5) Click on the 'Build' button. |
| 78 | 6) Once the sixteen project configurations are built you are done. |
| 79 | |
| 80 | Dynamic and static c-ares libraries are built in debug and release flavours, |
| 81 | and can be located each one in its own subdirectory, dll-debug, dll-release, |
| 82 | lib-debug and lib-release, all of them below the 'vc\cares' subdirectory. |
| 83 | |
| 84 | In the same way four executable versions of each sample program are built, |
| 85 | each using its respective library. The resulting sample executables are |
| 86 | located in its own subdirectory, dll-debug, dll-release, lib-debug and |
| 87 | lib-release, below the 'vc\acountry', 'vc\adig' and 'vc\ahost'folders. |
| 88 | |
| 89 | These reference VC++ 6.0 configurations are generated using the dynamic CRT. |
| 90 | |
| 91 | |
| 92 | How to build using Visual Studio 2003 or newer IDE |
| 93 | -------------------------------------------------- |
| 94 | |
| 95 | First you have to convert the VC++ 6.0 reference workspace and project files |
| 96 | to the Visual Studio IDE version you are using, following next steps: |
| 97 | |
| 98 | 1) Open vc\vc6aws.dsw with VS20XX. |
| 99 | 2) Allow VS20XX to update all projects and workspaces. |
| 100 | 3) Save ALL and close VS20XX. |
| 101 | 4) Open vc\vc6aws.sln with VS20XX. |
| 102 | 5) Select batch build, check 'all' projects and click 'build' button. |
| 103 | |
| 104 | Same comments relative to generated files and folders as done above for |
| 105 | Visual Studio 6 IDE apply here. |
| 106 | |
| 107 | |
| 108 | Relationship between c-ares library file names and versions |
| 109 | ----------------------------------------------------------- |
| 110 | |
| 111 | c-ares static release library version files: |
| 112 | |
| 113 | libcares.lib -> static release library |
| 114 | |
| 115 | c-ares static debug library version files: |
| 116 | |
| 117 | libcaresd.lib -> static debug library |
| 118 | |
| 119 | c-ares dynamic release library version files: |
| 120 | |
| 121 | cares.dll -> dynamic release library |
| 122 | cares.lib -> import library for the dynamic release library |
| 123 | cares.exp -> export file for the dynamic release library |
| 124 | |
| 125 | c-ares dynamic debug library version files: |
| 126 | |
| 127 | caresd.dll -> dynamic debug library |
| 128 | caresd.lib -> import library for the dynamic debug library |
| 129 | caresd.exp -> export file for the dynamic debug library |
| 130 | caresd.pdb -> debug symbol file for the dynamic debug library |
| 131 | |
| 132 | |
| 133 | How to use c-ares static libraries |
| 134 | ---------------------------------- |
| 135 | |
| 136 | When using the c-ares static library in your program, you will have to |
| 137 | define preprocessor symbol CARES_STATICLIB while building your program, |
| 138 | otherwise you will get errors at linkage stage. |
| 139 | |
| 140 | |
| 141 | Have Fun! |
| 142 | |