Il y a «mkmf» dans la bibliothèque attachée standard de Ruby.
Il s'agit à l'origine d'une bibliothèque de pièces jointes standard Ruby pour créer des Makefiles qui créent des bibliothèques d'extensions Ruby, mais comme elle est créée merveilleusement pratique et flexible par les mains des développeurs Ruby, elle peut également être utilisée pour vérifier facilement l'environnement de la machine Il semble qu'il puisse être utilisé.
"Je veux vérifier si l'environnement peut accepter des membres st_ctim.tv_nsec avec la structure struct stat." => have_struct_member("structstat","st_ctim.tv_nsec")
"Je veux utiliser si mecab peut être utilisé" => have_header('mecab.h')
"Je ne peux m'empêcher de me demander s'il existe une bibliothèque libc et printf peut être utilisée." => have_library("c","printf")
"Je veux écrire ce que j'ai vérifié jusqu'à présent sous forme de fichier d'en-tête" => create_header
Ce fichier d'en-tête est écrit comme #define HAVE_STRUCT_STAT_ST_CTIM 1
s'il a un membre struct stat st_ctim.tv_nsec
.
Après cela, si vous # incluez
le fichier d'en-tête et branchez avec # ifdef
etc., vous pouvez écrire du code qui peut être utilisé de manière portable dans n'importe quel environnement. (Enquête requise)
Même si vous ne prenez pas la peine de l'écrire dans l'en-tête, $ defs aura "[" -DHAVE_STRUCT_STAT_ST_CTIM " Il est conçu pour être facile à utiliser comme option de compilation car le tableau est compressé comme] `.
Facile à utiliser. Dites simplement «require'mkmf».
Puisqu'il s'agit de code Ruby, les instructions if peuvent être utilisées comme vous le souhaitez, et certaines des configurations qui sont compliquées dans le coin de votre maison peuvent être soigneusement organisées en code Ruby.
Si vous avez des commentaires tels que "Ceci est plus polyvalent et hautement fonctionnel", j'aimerais avoir de vos nouvelles, mais je pense que "l'attachement standard" est un avantage considérable. Ruby est génial. (Et si on me disait "N'utilisez pas mkmf dans ce but!")
Recommended Posts