首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使GPR在同一个项目中接受具有相同文件名的多个源?

如何使GPR在同一个项目中接受具有相同文件名的多个源?
EN

Stack Overflow用户
提问于 2022-04-21 17:06:02
回答 1查看 197关注 0票数 3

我开始用C来重写一个开放源码软件项目给Ada。第一步是用探地雷达取代建造系统。在这样做时,我偶然发现了一个问题:它不允许存储库中具有相同名称的多个源:

duplicate source file name "slp_debug.h"

该文件存在于两个不同的目录中;一个用于实现,另一个用于测试(我估计是存根)。这应该是很好的,因为预处理器将决定性地选择源相对于它的源,或者根据包含目录的顺序。但GPR似乎不喜欢这个想法。

如何让探地雷达接受它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-22 16:46:30

我尝试了openslp-2.0.0,并设法使一个构建库的GPR和另一个with的第一个构建测试-没有抱怨重复的文件。

两个项目文件都位于顶层。

对于像openslp这样的项目来说,configure过程会在顶层生成一个冗长的config.h,其负载为#define HAVE_FOO 1

这是“公共”项目文件--我认为其中也可能有一个可执行文件(slptool),可能必须是一个单独的探地雷达,因为这个文件构建了一个库:

代码语言:javascript
复制
project Openslp is

   for Languages use ("c");

   for Source_Dirs use ("common", "libslp", "libslpattr");
   for Excluded_Source_Files use
     (
      "slp_win32.c",       -- not on Darwin! or Linux, ofc
      "libslpattr_tiny.c"  -- I think this must be an alternate version
     );

   for Library_Name use "slp";
   for Library_Kind use "static";
   for Library_Dir use "lib";

   for Object_Dir use "obj-openslp";
   for Create_Missing_Dirs use "true";

   package Compiler is
      for Switches ("c") use
        (
         "-DDARWIN",
         "-DHAVE_CONFIG_H",
         "-I" & project'Project_Dir,  -- for config.h, created by configure
         "-I" & project'Project_Dir & "/common",
         "-I" & project'Project_Dir & "/libslp",
         "-I" & project'Project_Dir & "/libslpattr",
         "-DETCDIR=""" & project'Project_Dir & "/etc"""
        );
   end Compiler;

end Openslp;

这是一个“测试”:

代码语言:javascript
复制
with "openslp";
project Openslp_Test is

   for Languages use ("c");

   for Source_Dirs use ("test/**");
   for Object_Dir use "obj-openslp_test";

   for Exec_Dir use "test/bin";
   for Main use ("SLPFindAttrs.c");  -- etc, etc

   for Create_Missing_Dirs use "true";

   package Compiler is
      for Switches ("c") use
        ("-I" & project'Project_Dir & "/test")  -- for the local slp_debug.h
        & Openslp.Compiler'Switches ("c");
   end Compiler;

end Openslp_Test;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71958308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档