J'ai finalement réussi à comprendre cela moi-même. Je ne promets pas que je l'ai fait de la meilleure façon, puisque je ne suis pas un expert de Visual Studio, mais ça a marché. Donc, pour le bénéfice de la postérité, voici ce que j'ai fait.
D'abord, dupliquez config.h.in. Appelez la nouvelle copie config.h. Maintenant, éditez-le à la main pour définir les options de la bibliothèque que vous allez générer: quel mode de précision utiliser, quels ensembles d'instructions vectorielles (le cas échéant) compiler, les tailles de différents types (qui dépendent de si vous planifiez compiler en mode 32 ou 64 bits), si inclure le support de thread, etc.
Créez maintenant un projet VS vide. Je recommande de le mettre au plus haut niveau du dossier source. Ensuite, dans l'Explorateur de solutions, cliquez sur l'icône "Afficher tous les fichiers" en haut. Cela facilitera les étapes suivantes, puisque vous pouvez ajouter ou exclure des fichiers directement à partir de l'Explorateur de solutions.
Affichez la fenêtre Propriétés du projet. Vous devez définir un grand nombre d'options:
En général, définissez "Type de configuration" sur la bibliothèque statique. (Ou vous pouvez le définir en bibliothèque dynamique si vous voulez une DLL, mais vous devrez trouver comment exporter les symboles nécessaires, ce que je n'ai pas fait car je voulais une bibliothèque statique.)
Dans les répertoires VC++, modifiez "Inclure les répertoires". Ajoutez les répertoires suivants (en remplaçant "(source dir)" par le répertoire réel contenant la source):
(source dir)
(source dir)\api
(source dir)\dft
(source dir)\rdft
(source dir)\reodft
(source dir)\kernel
(source dir)\simd-support
(source dir)\dft\simd
(source dir)\dft\scalar
(source dir)\rdft\simd
(source dir)\rdft\scalar
Si vous y compris le soutien de filetage, puis en C/C++> Langue, définissez "Open MP Support" oui.
Si vous incluez le support AVX, alors dans C/C++> Génération de code, réglez "Activer Enhanced Instruction Set" sur AVX. Cela signifie que la bibliothèque que vous générez ne fonctionnera pas sur un ordinateur qui ne prend pas en charge AVX. Vous pourrez peut-être contourner cette restriction en définissant uniquement cette option sur les fichiers source individuels qui utilisent AVX. Je ne suis pas certain de ça.
Dans C/C++> Fichiers de sortie, définissez "Nom du fichier objet" sur $(IntDir)/%(RelativeDir)/
. (FFTW a beaucoup de fichiers avec les mêmes noms mais dans des répertoires différents, et par défaut VS met tous les fichiers objet dans le même répertoire, ce qui ne fonctionnera pas.)
Maintenant vous êtes prêt à ajouter des fichiers source à le projet, que vous pouvez faire en cliquant droit dans l'Explorateur de solutions et en choisissant "Inclure dans le projet". Vous devez ajouter tous les fichiers .c dans les dossiers suivants:
api
dft
dft/scalar
kernel
rdft
rdft/scalar
reodft
Si vous souhaitez enfiler un soutien, vous devez ajouter tous les fichiers source dans « fils » sauf pour Threads.C. (Celui-là contient la version de pthreads.)
Si vous souhaitez soutenir pour tous les jeux d'instructions de vecteur, vous devez inclure uniquement les fichiers relatifs à l'instruction particulière vous plonge voulez dans les dossiers suivants:
dft/simd
rdft/simd
simd-support
On peut supposer que si vous voulez un soutien mpi, vous incluez les fichiers dans "mpi". Je n'ai pas fait ça, donc je ne sais pas s'il y a autre chose dont vous aurez besoin pour faire ce travail. Assurez-vous de régler la configuration sur "Release" et "x86" ou "x64", selon le type de binaire que vous voulez. Et maintenant, si je n'ai rien oublié de critique, vous devriez être capable de compiler une bibliothèque.
Merci d'avoir pris le temps de décrire votre solution. J'étais également coincé sur la compatibilité avec VS 2015, et cela ne semble pas être un problème populaire. – benrules2