2017-11-02 26 views
0

저는 Gradle을 처음 사용하고 크로스 플랫폼 빌드 스크립트를 만들려고합니다. 사용자 지정 원본 디렉터리를 사용하고 싶습니다. src/{ProjectName}/cpp 또는 헤더/{ProjectName}/cpp가 아닙니다. 내 원본 파일은 build.gradle 파일과 동일한 수준의 "src"및 "include"폴더에 있습니다.사용자 정의 소스 디렉토리를 추가 하시겠습니까?

enter image description here

어떻게 내가 만 소스 폴더에 링크 할 내 프로젝트 디렉토리 구조의 이미지를 참조하십시오? gradle cpp 라이브러리 예제는 이것을 다루지 않습니다. 내가 만든 스크립트는 성공적으로 빌드하지만 exe는 생성하지 않습니다. 나는 그것이 cpp 파일을 찾을 수 없기 때문에 나는 짐작한다.

더 나은 방법은 gradle이 사용하는 경로를 어떻게 확인할 수 있습니까? 옵션 - "- info"및 "-debug"가 사용 된 소스 경로를 출력하지 않는 것 같습니다.

다음은

apply plugin: 'cpp' 

model { 

    buildTypes { 
     debug 
     release 
    } 

    platforms { 

     //osx_64 { 
      //architecture "x86_64" 
      //operatingSystem "osx" 
     //} 

     windows_x86 { 
      architecture "x86" 
      operatingSystem "windows" 
     } 

     windows_64 { 
      architecture "x86_64" 
      operatingSystem "windows" 
     } 
    } 

    repositories { 
     libs(PrebuiltLibraries) { 
      libcinder { 
       headers.srcDir "/../cinder/include/" 
       binaries.withType(StaticLibraryBinary) { 
        if (targetPlatform.operatingSystem.windows) { 
         if (targetPlatform == platforms.windows_x86) { 
          if(buildType == buildTypes.debug) { 
           staticLibraryFile = file("/../cinder/lib/msw/x86/Debug/v140/cinder.lib") 
          } else if(buildType == buildTypes.release) { 
           staticLibraryFile = file("/../cinder/lib/msw/x86/Release/v140/cinder.lib") 
          } 
         } else if(targetPlatform == platforms.windows_64) { 
          if(buildType == buildTypes.debug) { 
           staticLibraryFile = file("/../cinder/lib/msw/x64/Debug/v140/cinder.lib") 
          } else if(buildType == buildTypes.release) { 
           staticLibraryFile = file("/../cinder/lib/msw/x64/Release/v140/cinder.lib") 
          } 
         } 
        } //else if(targetPlatform.operatingSystem.o osx) { 
         //if (targetPlatform == platforms.osx_64) { 
          //if(buildType == buildTypes.debug) { 
           //staticLibraryFile = file("/../cinder/lib/macosx/Debug/libcinder.a") 
          //} else if(buildType == buildTypes.release) { 
           //staticLibraryFile = file("/../cinder/lib/macosx/Release/libcinder.a") 
          //} 
         //} 
        //} 
       } 
      } 
     } 
    } 

    components { 
     main(NativeExecutableSpec) { 
      sources { 
       cpp { 
        source { 
         srcDir "src" 
         include "include" 
         cpp.lib library: "libcinder", linkage: "static" 
        } 
       } 
      } 
     } 
    } 

/* 
    components { 
     main(NativeExecutableSpec) { 
      sources { 
       cpp.lib library: "libcinder", linkage: "static" 
      } 
     } 
    } 
*/  
} 

답변

0

당신은, 예를 들어, 당신의 소스를 구성 할 sourceSets을 사용할 수 있습니다 ... 내 전체 스크립트입니다.

apply plugin: 'java' 

sourceSets { 
    main { 
     java { 
      srcDirs = [ 
       "$projectDir/src/main/java", 
       "$projectDir/$generatedDir", 
       "$projectDir/config/sql" 
      ] 
      include '**/*.java' 
     } 

     resources { 
      srcDirs = [ 
       "$projectDir/src/main/resources" 
      ] 

     } 
    } 

    test { 
     java { srcDir 'src/test/java'} 
     resources { srcDir 'src/test/resources' } 
    } 

    componentTest { 
     java { srcDir 'src/ctest/java' } 
     resources { srcDir 'src/ctest/resources' } 
    } 
} 
+0

cpp 프로젝트 또는 java 프로젝트의 솔루션으로 사용하셨습니까? 귀하의 솔루션은 생각하지 Cpp를 위해 작동하지 않습니다. 나는 Cpp로 java를 대체 할 때 "인수에 대한 메소드 cpp()를 찾을 수 없습니다"라는 메시지가 나타납니다. 나는 cpp 플러그인도 사용하고 있습니다 (플러그인을 적용하십시오 : 'cpp'). – SRG