92884


##### 質問内容

以下のMakefileで静的ライブラリをリンクする再に毎回そのディレクトリを参照しないといけいなと思いますが  
複数の静的ライブラリがある場合、一度ディレクトリを指定してその後それを省略する方法はあるのでしょうか？

##### やりたいこと

`L~/Library/lib`と一度入力するとそれ以降それがパスも参照範囲になり-lglew3
-lglfw32s等と入力するだけでリンクできるよな方法あるのか知りたい。

##### 試したこと

`# $(CXX) $^ -o $@ -L~/Library/lib -lglfw3`は以下のエラーになります

[code]

    $ make
    g++ obj/Main.o -o libFrameWork.a -L~/Library/lib -lglfw3
    /usr/bin/ld: -lglfw3 が見つかりません
    collect2: error: ld returned 1 exit status
    make: *** [Makefile:11: libFrameWork.a] エラー 1
    
    
[/code]

[code]

    PRG         :=libFrameWork.a
    SRC_DIR     :=src
    OBJ_DIR     :=obj
    DEP_DIR     :=obj
    DEP         :=$(wildcard $(DEP_DIR)/*.d)
    SRC         :=$(wildcard $(SRC_DIR)/*.cpp)
    OBJ         :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
    
    ####################################################################
    $(PRG): $(OBJ) 
    #   $(CXX) $^ -o $@ -L~/Library/lib -lglfw3
    
        $(CXX) $^ -o $@ -L~/Library/lib/glfw3
    
    #   ar rcs $@ $(OBJ)
    ####################################################################
    $(OBJ_DIR)/%.o: src/%.cpp
        $(CXX) -c -MMD -MP $< -o $@ -I ~/Library
    -include $(DEP)
    
    clean:
        rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d $(PRG)
    
    
[/code]


CC BY-SA 4.0
2022-12-18T02:34:05.853
92856
2022-12-18T22:55:01.690
2022-12-18T05:45:01.810
55177
55177
question
c++
g++ 複数の静的ライブラリの指定でディレクトリ参照を省略する方法が知りたい


複数のライブラリが同じディレクトリに置いてあればそこを一度だけ `-L`
で指定すれば済みます。複数のライブラリが別のディレクトリにあれば、ディレクトリの数だけ `-L` が必要です。

そもそも `Makefile` に一度書けば済む話なので、`-L` を書く回数は気にすることではありません。  
また、通常は他者が作ったライブラリはパッケージでインストールして `pkg-config --libs 名前` でフラグを生成します。


CC BY-SA 4.0
2022-12-18T22:55:01.690
92884
2022-12-18T22:55:01.690
3475
92856
answer