问题标签 [out-of-source]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1469 浏览

cmake - 在多部分 cmake 项目中获取源代码构建的正确方法

我使用 cmake 来构建、测试和安装我的项目。我的方法有点粗糙:我使用这样的脚本来获取源外构建:

我想我至少可以把它放到makefile中,但是使用Makefile运行cmake来生成新的Makefile并运行另一个make不是很奇怪吗?

正确的方法是什么?cmake 是否可以选择避免调用“cd”?

最近它变得更加复杂,因为我提取了一个我想单独编译、测试和分发的库。我想避免重复我在顶级 CMakeLists.txt 中的所有内容。

如何用cmake正确地做到这一点?

0 投票
1 回答
4382 浏览

scons - 如何使用 scons 进行源代码外构建?

我一直在使用 cmake 从源代码构建我的项目,这非常方便,因为您可以避免不必要的文件污染源目录。

假设 CMakeLists.txt 在当前目录中,可以按如下方式完成:

我怎样才能在 scons 中做同样的事情?

0 投票
1 回答
1203 浏览

c++ - 如何防止 qmake 在这种“源外”构建场景中创建额外的“moc”文件夹?

(抱歉,我想不出更好的解释方式,除非包括以下细节)

预建结构:

“Project.pro”的内容:

“Source.pro”的内容:

“My_Library.pro”的内容:

“ProjectSettings.pri”的内容

后期结构:

问题

这个想法是

  • qmake -recursive在项目文件夹中运行
  • 它构建所有指定的子项目
  • 吐出一堆组织良好的中间文件
  • 并将子项目的所有二进制文件放在一个文件夹中
  • 所有这些都基于 Debug 或 Release 范围进行隔离

它似乎工作得很好,除了项目文件夹中的每个“子项目”有一个额外的文件夹,每个文件夹都包含一个 moc 文件夹,我在上面突出显示了“WTF” *

问题

  1. .pro 文件中的哪个(组合)指令生成“WTF”文件夹?
  2. “WTF”文件夹将用于什么?(请记住 Debug 和 Release 范围指定它们自己的 moc)
  3. 有没有办法防止创建“WTF”文件夹?

我没有任何会导致 MOC 输出 moc 文件的源文件,所以目前所有 moc 文件夹都是空的。

* "WTF" = "什么文件夹"

0 投票
3 回答
1016 浏览

windows - cmake:树外构建的问题

使用我当前的CMakeLists.txt文件,我可以构建我的项目:

从源目录。

但是我无法获得树外构建:

这是我从 cmake 得到的错误:

0 投票
2 回答
1001 浏览

c - CMake:无法从带有子项目的源项目中编译出来

我有一个带有 CMake 的项目(有 3 个子项目),当我在与顶部 CMakeLists.txt 相同的目录中执行 cmake 时,它​​可以完美构建。但是当我尝试使用源代码构建时,我收到以下错误:

0 投票
1 回答
934 浏览

c++ - 如何使用 Visual Studio 创建源代码树项目?

我使用Show All Files解决方案资源管理器中的功能,该功能在镜像文件系统的文件夹结构中显示项目文件,而不是使用 Visual Studio 的过滤器。我的目标是在源代码树之外创建一个 Visual Studio 项目,该项目仍列出其目录结构中的文件。

到目前为止,我所做的是在如下所示的目录结构中创建一个空的解决方案和项目。然后我选择了src目录里面的三个文件夹,拖到项目里面。它们被添加到项目中,但它们在解决方案资源管理器中显示为一个简单的列表,而不是在它们的本机目录结构中。

如何在不破坏上述文件系统视图的情况下创建位于源代码树之外的项目?

0 投票
1 回答
577 浏览

c++ - Eclipse 中的源代码外构建

是否可以使用 eclipse/autotools 从其源目录中编译项目?我需要保持源树清洁。

我已经尝试过的:

更改目录:Project properties -> C/C++ builds -> Build directory. (默认值为${workspace_loc:/project-name}/。)虽然这没有帮助。

0 投票
2 回答
291 浏览

c - Getting the compiler to find a Cmake-created file

I'm using the configure_file command in Cmake in a feature availability check as described on this page. That page suggests using the command like this:

which will translate ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in to ${CMAKE_CURRENT_BINARY_DIR}/config.h. But when I compile my program, the compiler only looks in ${CMAKE_CURRENT_SOURCE_DIR} for headers (e.g. config.h), not in ${CMAKE_CURRENT_BINARY_DIR}. So naturally, the compiler doesn't find config.h where it was generated, and the build fails.

What's the standard way to resolve this issue? Should I change CMakeLists.txt so that config.h gets created in the source directory? Or should I change it to add the build directory to the include path? (And really, why do I have to manually deal with this at all? [semi-rhetorical question])

This question concerns a similar issue but both options are suggested as possible solutions; I want to know if there's a standard practice, or if this indicates that I'm missing something about how Cmake is meant to be used.

0 投票
1 回答
80 浏览

c - makepp:如何使用公共源目录管理多个构建?

我有一个源代码树:

并希望为固件引导加载程序管理两个单独的构建,每个构建都使用通用系统,但编译方式不同(即使用自己的一组选项)。

构建必须是out-of-tree。makepp 明显的“存储库”功能在这里不是解决方案,因为它打破了这个原则。符号链接也不是解决方案,因为它必须在 Windows 上工作。

问题实际上出在共享系统源中,其相对路径结构与其他系统不同,导致通用模式规则不适用于它们:

使用单个 RootMakeppfile 并包含 *.mk 文件(而不是加载它们)的方法也不允许我做这样的事情:

我尝试了很多完全不同的方法。这并不像乍一看那样微不足道。请帮忙。

0 投票
1 回答
673 浏览

cmake - 更改 CMake 构建目录

我想更改 cmake 的工作目录。例如,当前当我从CMakeLists.txt所在的c/目录运行 cmake 时,这将是创建的目录和文件:

这真的很难看,而且我们的应用程序是跨平台的,所以这不好。目前我使用c/build目录中的 Cmake,如下所示:

所以基于参数(如果我从c/运行 cmake )我想创建一个这样的目录结构:

这可以用cmake还是只用bash?

问候,克里斯蒂安