2015-01-27 4 views
3

C++ Gradle 프로젝트에서 boost 1.49 라이브러리를 사용합니다.네이티브 정적 종속성 추가

이 라이브러리를 프로젝트의 종속성으로 어떻게 추가 할 수 있습니까?

이 방법을 시도하지만 종속성으로 밀어 올림을 정의해야합니다. C++ 라이브러리 저장소가 있습니까?)하지만 당신은 $GRADLE_HOME/samples/native-binaries를 탐색 할 때이 유용한 예제를 많이 찾을 수

apply plugin: 'cpp' 

libraries { 
    hello { 
     baseName 'hello' 
    } 
} 

sources { 
    hello{ 
     cpp { 
      source.srcDirs = ['src'] 
      lib library: 'boost', linkage: 'api' 
      exportedHeaders.srcDirs = ['include'] 
     } 
    } 
} 

답변

1

C/CPP 프로그램은 없습니다하지만 도메인 (반대로 Gradle을 위해)이다. 이러한 구성을 가지고 - 그것은 당신을 위해 유용 할 수 있습니다 : - 그들의

Cunit의은 (멀티 프로젝트 오하는 또 다른 하나가있다). 아래에 난 build.gradlecunit에서 동봉합니다 - 당신은 gradle 래퍼를 사용하는 경우.

apply plugin: "c" 
apply plugin: "cunit" 

model { 
    flavors { 
     passing 
     failing 
    } 
    repositories { 
     libs(PrebuiltLibraries) { 
      cunit { 
       headers.srcDir "lib/cunit/2.1-2/include" 
       binaries.withType(StaticLibraryBinary) { 
        staticLibraryFile = 
         file("lib/cunit/2.1-2/lib/" + 
          findCUnitLibForPlatform(targetPlatform)) 
       } 
      } 
     } 
    } 
} 

libraries { 
    operators {} 
} 
binaries.withType(CUnitTestSuiteBinarySpec) { 
    lib library: "cunit", linkage: "static" 

    if (flavor == flavors.failing) { 
     cCompiler.define "PLUS_BROKEN" 
    } 
} 

def findCUnitLibForPlatform(Platform platform) { 
    if (platform.operatingSystem.windows) { 
     return "vs2010/cunit.lib" 
//  return "vs2013/cunit.lib" 
//  return "cygwin/cunit.lib" 
//  return "mingw/cunit.lib" 
    } else if (platform.operatingSystem.macOsX) { 
     return "osx/libcunit.a" 
    } else { 
     return "linux/libcunit.a" 
    } 
} 

빠른 검색 결과는 c/cpp 프로젝트의 라이브러리 저장소와 같은 것이 없음을 보여 줬습니다. 도서관이 프로젝트 소스에 포함되어야한다고 보인다.