2012-10-06 23 views
0


我的項目資源庫和結構如下:使用上一級目錄項目

 
repo/ 
    configure.ac 
    Makefile.am 
    project1/ 
    configure.ac 
    Makefile.am 
    [sources] 
    project2/ 
    configure.ac 
    Makefile.am 
    [sources] 
    project3/ 
    configure.ac 
    Makefile.am 
    [sources] 

現在我需要添加目錄(可以說common_logic/)到repo/並以某種方式修改project1project2使用common_logic的來源。

一,我能看到的解決方案是 複製../common_logic/./configureproject1/執行,並添加Makefile.am以下行(或Makefile的任何規則前):

 
project1_la_CFLAGS += -I./common_logic 

project1_la_SOURCES += ./common_logic/foo.h ./common_logic/foo.c 

在這種情況下,既沒有makemake dist都壞了。然而它對我來說看起來像一個柺杖。

無論如何,你能告訴我應該如何修改project1project2以使用新創建的文件夾?或者指出另一種解決方案

回答

1

也許是最好從common_logic建立一個方便的庫:

noinst_LTLIBRARIES = libcommonlogic.la 
libcommonlogic_la_SOURCES = foo.c foo.h 

然後,在project1Makefile.am

project1_la_LIBADD = ../common_logic/libcommonlogic.la 
+0

這是_in-place_構建解決方案。但是'make dist'會被打破,對嗎? – ilardm

+0

不正確; 'make dist'可以工作,因爲'libcommonlogic.la'將在'$(top_builddir)/ common_logic /'中構建,而'project1.la'構建將有一個工作目錄'$(top_builddir)/ project1'。所以路徑將相對於彼此保持相同。 – ptomato

+0

但是,如果你不相信我,那就試試吧 - 我可能是錯的;-) – ptomato