标签: subproject

Xcode 4中的跨项目源代码参考

我知道你可以让Xcode在其他项目中引用框架/静态lib构建目标,但如果你想引用的项目没有框架/静态lib目标,你可以直接引用另一个Xcode项目的源代码吗?我试图使用子项目和Xcode 4工作区来做到这一点无济于事.调整标题搜索路径后,所有#import语句都能正常工作,但我仍然会收到令人讨厌的编译器错误报告未找到的符号.

setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Developer/usr/bin/clang -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.7.sdk -L/Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug -F/Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug -filelist /Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Intermediates/.build/Debug/.build/Objects-normal/x86_64/.LinkFileList -mmacosx-version-min=10.7 -fobjc-arc -framework Cocoa -o /Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug/.app/Contents/MacOS/

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_MagicalRecordHelpers", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_MRCoreDataAction", referenced from:
      objc-class-ref in ItemsArrayController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

此外,这个新的Xcode 4工作区的处理是什么?它与子项目有何不同?我唯一能找到的是它们看起来与众不同......

工作区

在此输入图像描述

子projct

在此输入图像描述

workspace xcode linker compilation subproject

6
推荐指数
1
解决办法
2595
查看次数

重写历史 git filter-branch 创建/拆分为子模块/子项目

我目前正在将 cvs 项目导入 git。
导入后,我想重写历史记录以将现有目录移动到单独的子模块中。

假设我有这样的结构:

file1
file2
file3
dir1
dir2
library

现在我想重写历史记录,以便该目录library始终是 git 子模块。比如说,将指定的目录拆分为它们自己的子模块/子项目

这是我当前的代码:

文件重写子模块(被调用)

cd project
git filter-branch --tree-filter $PWD/../$0-tree-filter --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)

文件重写子模块树过滤器

    #!/bin/bash

    函数 gitCommit()
    {
        取消设置 GIT_DIR
        取消设置 GIT_WORK_TREE
        git添加-A
        if [ -n "$(git diff --cached --name-only)" ]
        然后
            # 需要提交的东西
            git 提交 -F $_msg
        菲
    }

    _git_dir=$GIT_DIR
    _git_work_tree=$GIT_WORK_TREE
    取消设置 GIT_DIR
    取消设置 GIT_WORK_TREE
    _dir=$PWD

    如果[-d“库”]
    然后
        _msg=$(临时文件)
        git 日志 ${GIT_COMMIT}^! --format="%B" > $_msg
        git rm -r --缓存库
        光盘库 …

git url-rewriting subproject git-submodules git-filter-branch

5
推荐指数
1
解决办法
1344
查看次数

SBT 使用集合创建子项目

一段时间以来,我一直在寻找这是否可行,但收效甚微。

使用 SBT,您能否以编程方式创建子项目,而无需将每个项目明确分配给它自己的项目val

我当前的项目结构如下所示:

root/
    common/ <--- This is another sub-project that others dependOn
    project/
        build.scala
    src/main/scala
    apps/ <--- sub-projects live here
        Sub1/
        Sub2/
Run Code Online (Sandbox Code Playgroud)

Sub1并且Sub2都是他们自己的 SBT 项目。

我第一次尝试将这些项目联系在一起是这样的:

// root/project/build.scala
import sbt._
import Keys._
object build extends Build {
  lazy val common = project /* Pseudo-code */
  val names = List("Sub1", "Sub2")
  lazy val deps = names map { name =>
    Project(id = name, base = file(s"apps/$name")).dependsOn(common)
  }

  lazy val finalDeps = common :: deps …
Run Code Online (Sandbox Code Playgroud)

reflection scala subproject sbt

5
推荐指数
1
解决办法
388
查看次数

将第三方框架添加到iOS应用程序中的Xcode子项目或主项目中

我的 Xcode 项目“MyMainApp”有一个名为“MyLib”的静态库类型 Xcode 子项目。现在我需要在我的 iOS 应用程序中使用一些第三方 iOS 框架。我只想将它们添加/链接到 MyLib 而不是 MyMainApp,这样我就可以使 MyLib 可重用且独立,以便在我的其他 iOS 应用程序中使用它。MyMainApp 中的一些视图控制器使用属于 MyLib 的视图控制器之一。MyLib 中的此视图控制器使用第三方框架内的类的功能。现在我面临的问题是,如果我将第三方框架添加到 MyLib 而不是将它们添加到 MyMainApp,我会收到链接器错误“词法或预处理器问题。未找到 XXX.h 文件”。如果我将框架添加到 MyMainApp 和 MyLib 中,一切都会正常运行,但这不是我想要的。我已确保框架搜索路径和标头搜索路径是正确的。在这种情况下,我无法找到苹果公司的任何参考资料。我想知道将第三方框架和库添加/链接到静态库类型的 Xcode 子项目的最佳实践。还有解决方案可以克服链接器错误并将框架仅添加到静态库项目吗?

xcode subproject ios ios-frameworks

5
推荐指数
1
解决办法
6092
查看次数

在具有子项目的项目中设置CMAKE_CONFIGURATION_TYPES的位置

假设我有一个项目有两个独立的子项目.如果我正确地理解了cmake,那么想法是让一个根CMakeLists.txt定义a project(...)然后使用add_subdirectory(...)包含子项目.每个子项目都有CMakeLists.txt自己的项目定义.这样,项目可以一起构建(使用根cmake文件),也可以单独构建(使用子项目cmake文件).

我现在想改变CMAKE_CONFIGURATION_TYPES.我应该在根目录CMakeLists.txt或每个子项目中执行此操作,还是两者都执行此操作?

在根中更改它意味着单独构建子项目将提供错误的配置类型; 其他选项会复制cmake代码.我想我在这里遗漏了一些东西.

cmake subproject

5
推荐指数
1
解决办法
8657
查看次数

Gradle - 列出子项目的任务

我知道我可以用来gradle tasks列出根项目的任务。我继承了一个庞大的项目,其中有数十个 4-5 级深度的子​​项目。许多任务是动态创建的。

如何列出特定子项目可用的任务?

subproject gradle

5
推荐指数
1
解决办法
2644
查看次数

Gradle子项目构建依赖项

我有一个依赖问题,我不知道如何解决它.

我有一个项目A,B和C.

A需要B和C.

B需要C

我的目录结构如下所示:

A
|-settings.gradle
|-build.gradle
|-lib
   |- B
   |- C
Run Code Online (Sandbox Code Playgroud)

settings.gradle内容:

include 'lib/B'
include 'lib/C'
Run Code Online (Sandbox Code Playgroud)

build.gradle内容:

apply plugin: 'java'
dependencies {
  compile project(':lib/B'), 
          project(':lib/C') 
}

project(':lib/B'){
  dependencies {
    compile project(':lib/C')
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我不声明项目(':lib/B'){...}部分,则由于依赖性而无法构建项目B.

如果我声明项目(':lib/B'){...}部分,Gradle告诉我:无法在org.gradle.api.internal上找到参数[project':lib/C']的方法compile() .artifacts.dsl.pendencies.DefaultDependencyHandler_Decorated @ 221bad.

我怎么能解决它,或者在B之前编译C?

PS:数据结构更改是不可能的.

java dependencies multi-project subproject gradle

4
推荐指数
1
解决办法
1万
查看次数

Gradle自定义任务仅适用于某些子项目?

我创建了一个自定义herpderpGradle任务:

task herpderp(type: HerpDerpTask)

class HerpDerpTask extends DefaultTask {
    @TaskAction
    def herpderp() {
        println "Herp derp!"
    }
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以将此任务添加到其他Gradle构建中,在其他项目的构建调用中使用它:

gradle clean build herpderp
Run Code Online (Sandbox Code Playgroud)

现在,我有以下多项目设置:

myapp/
    myapp-client/
        build.gradle
        src/** (omitted for brevity)
    myapp-shared/
        build.gradle
        src/** (omitted for brevity)
    myapp-server
        build.gradle
        src/** (omitted for brevity)
    build.gradle
    settings.gradle
Run Code Online (Sandbox Code Playgroud)

在哪里myapp/build.gradle:

subprojects {
    apply plugin: 'groovy'
    sourceCompatibility = '1.7'
    targetCompatibility = '1.7'

    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        compile (
            'org.codehaus.groovy:groovy-all:2.3.7'
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

在哪里myapp/settings.gradle:

include ':myapp-shared'
include …
Run Code Online (Sandbox Code Playgroud)

configuration build subproject gradle

3
推荐指数
1
解决办法
1906
查看次数

从github中删除子项目提交

我有即两个仓库AB.错误地,我在我的机器上克隆了A里面的回购B. 我从repo B中删除了所有代码但是当我从A上推送并合并我的代码时,它还显示了BGithub repo上的子项目提交.

我想从我的master上删除子项目提交.这些步骤会起作用吗?

1. rmdir B (on my local repo A) 2. Pushing my repo A to origin 3. Merging

git github subproject git-commit

3
推荐指数
2
解决办法
9830
查看次数

使用 CMake 编译和链接子项目库

我有 2 个项目(prj1 和 prj2)。一个 (prj2) 依赖于另一个 (prj1),后者是一个静态库。我来用 CMake 分别编译它们。

但我需要将一个 (prj1) 集成到另一个 (prj2)。所以我希望CMake在另一个(prj2)之前编译静态库(prj1),然后链接静态库。我尝试了一些东西,但 id 没有用。

在 prj2 中,externals/core 是一个 git 子模块(对于非 git 用户,您可以将此目录视为 prj1 的复制粘贴)。我在prj2“SDL2”中尝试了(没有成功)这个CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)


if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
    "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  set(CMAKE_CXX_FLAGS       "-Wall -Wextra -Wformat=2 -Wpedantic -D_FORTIFY_SOURCE=2")
  set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
  # TODO
endif()

set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
# if (CMAKE_VERSION VERSION_LESS "3.1")
#   if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
#       CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
#     set (CMAKE_CXX_FLAGS …
Run Code Online (Sandbox Code Playgroud)

compilation cmake subproject

3
推荐指数
1
解决办法
7150
查看次数

在子项目中继承Gradle插件

我想避免冗余,因此得到了一个包含以下内容的“共享”项目:

plugins {
    id "org.flywaydb.flyway" version "4.2.0"
}

repositories {
    mavenCentral()
    jcenter()
}

apply plugin: "java"

dependencies {
    compile "commons-io:commons-io:2.4"

    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后,我还有一些常规项目,它们可以从共享项目中继承编译依赖关系,如下所示:

apply plugin: "java"

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile project(":shared")
    testCompile project(":shared")
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使我的常规项目继承插件块或实际插件?

subproject gradle flyway

3
推荐指数
1
解决办法
3266
查看次数

Gradle 多模块项目:将模块依赖项应用于除自身之外的所有子项目

我的应用程序是一个 Gradle 多模块项目,由多个服务和一个服务通用模块组成。

\n\n

I\xc2\xb4ve 将所有模块共有的所有依赖项提取到根 build.gradle 中,并且我还想在所有子项目中包含service-common模块,这在理论上是可行的,但 I\xc2\xb4m 得到了循环依赖问题,因为它包含在其自身中。

\n\n
apply plugin: \'java\'\n\ngroup = \'com.myapplication\'\n\next {\n    set(\'springCloudVersion\', "2.2.0.RELEASE")\n    set(\'springBootVersion\', "2.2.2.RELEASE")\n}\n\nallprojects {\n\n    repositories {\n        jcenter()\n        mavenCentral()\n        maven { url \'https://repo.spring.io/milestone\' }\n    }\n\n}\n\nbuildscript {\n    ext {\n        springBootVersion = "2.2.2.RELEASE"\n    }\n\n    repositories {\n        maven { url \'https://repo.spring.io/plugins-snapshot\' }\n        jcenter()\n        mavenCentral()\n    }\n\n    dependencies {\n        classpath \'io.spring.gradle:dependency-management-plugin:1.0.7.BUILD-SNAPSHOT\'\n        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")\n    }\n}\n\nsubprojects {\n    version = \'1.0\'\n\n    apply plugin: \'org.springframework.boot\'\n    apply plugin: "io.spring.dependency-management"\n    apply plugin: \'java\'\n\n    ext {\n        springCloudVersion = "2.2.0.RELEASE"\n        springBootVersion = "2.2.2.RELEASE"\n    }\n\n …
Run Code Online (Sandbox Code Playgroud)

spring circular-dependency subproject gradle multi-module

2
推荐指数
1
解决办法
3847
查看次数