2012-05-07 17 views
2

premakeを使用してメインプログラムと外部ライブラリリンクを取得できません。たとえば、私は、この例に問題を単純化してきました:Premakeで外部ライブラリにリンクする

./_external/ext.cpp

#include "ext.h" 
int foo() 
{ 
    return 4; 
} 

./main.cpp

#pragma once 
int foo(); 

./_external/ext.h
#include "stdio.h" 
#include "_external/ext.h" 

int main() 
{ 
    printf("%d", foo()); 
    return 0; 
} 

./premake4.lua

solution "Test" 
    configurations { "Release", "Debug" } 

project "TestMain" 
    language "C++" 
    kind "ConsoleApp" 

    files "main.cpp" 

    links 
    { 
     "_external/libfoo.a" 
    } 

私はCygwin環境下で、GNU makeファイルを作成:

$ ./premake4.exe gmake 
Building configurations... 
Running action 'gmake'... 
Generating Makefile... 
Generating TestMain.make... 
Done. 

をし、私が作るとき、私は次のエラーを取得する:

$ make 
==== Building TestMain (release) ==== 
Linking TestMain 
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lD:/test/_external/libfoo.a 
collect2: ld returned 1 exit status 
TestMain.make:93: recipe for target `TestMain.exe' failed 
make[1]: *** [TestMain.exe] Error 1 
Makefile:16: recipe for target `TestMain' failed 
make: *** [TestMain] Error 2 

私が見つけた唯一の回避策は "linkoptions" を使用することです"links"の代わりに "-l"を削除しますが、私にとってはソリューションよりもハックのようです。

+1

公式サイトhttp://industriousone.com/linkoptionsには、linkoptionsを使用して外部ライブラリをリンクする例があります。そのように見えるのが答えです。ソリューションを回答として追加すると、他の人にとって有益です。 – Ismael

答えて

0

あなたは正しいことをしていますが、プレアケは間違っています。 Premakeのmakefileジェネレータには、物事が正しくリンクされないというバグがありました。これは、stable(バージョン4.4になる予定)とdev(5.0になります)の両方のリポジトリで修正されました。

固定電話を利用していただければ幸いです。

関連する問題