如何设置CMake以递归方式扫描给定目录并确定源文件列表?
我的项目是一个共享库.我有一个与此类似的文件夹结构:
/
src/ # Source files in an arbitrary tree
include/ # Headers, tree mirrors that of the src/ folder
examples/ # Executable code examples that link against the library
CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
我想避免:
src和include目录src/但是,每个示例都可以拥有自己的构建脚本.
在Jenkins中,有没有办法为每个或选定的构建步骤提供不同的超时?
构建时插件提供了超时功能"如果它被卡住了就完成项目中止",我需要的是为每个步骤提供不同的超时.这样我就可以提高我的流程效率.
我知道有类似的东西,find_package(Threads)但它似乎没有什么区别(至少本身).现在我正在使用SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-pthread"),但它对我来说看起来不是一个正确的解决方案.
我正在使用InteliJ IDEA(社区添加),我发现自己在项目文件夹中进行了一些文件传输.在将任务重新调整一段时间后,我创建了一些自动传输文件的批处理脚本.现在,如果我可以直接从IDE运行脚本,我会更高兴 - 例如按一个按钮......
问题是:我可以向IntelliJ IDE添加按钮 - 这将运行批处理文件吗?如果有可能,我会很高兴知道如何做到这一点.
谢谢!
在我的C#ClickOnce应用程序中,项目 - > 属性 - > 发布选项卡中有一个自动递增的发布版本.我想在我的菜单帮助 - > 关于框中显示该版本,但我正在使用的代码显然访问了程序集版本,这是不同的.
可以在项目 - > 属性 - > 应用程序 - >装配信息对话框中手动更改装配版本.所以现在,每次我发布之前我都会将发布版本复制到汇编版本,所以我的对话框显示了当前版本的应用程序.必须有更好的方法来做到这一点.
我真正想做的就是拥有一个准确的,自动更新的,代码可访问的版本号.
这是我用来访问程序集版本号的代码:
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是找到访问发布版本的代码.
我想用最新的SVN版本号开始标记我已部署的二进制文件.
但是,因为SVN是基于文件而不是基于目录/项目的,所以我需要扫描所有目录和子目录的文件,以确定最高版本号.
svn info在root上使用不起作用(它只报告该目录的版本,而不是子目录中的文件):
我想知道是否有使用该svn命令执行此操作的快捷方式.否则,任何人都可以建议一个网络效率的简单脚本(我更喜欢它根本没有点击远程服务器)?
我也明白,一个可供选择的方法是保持一个版本的文件与svn:keywords.这工作(我已经在其他项目上使用过它),但我厌倦了确保文件是脏的并处理不可避免的合并冲突.
回答我svn up在调用svn info根目录之前看到我的问题在于没有做正确的事情:
$ svn info
Path: .
...
Last Changed Author: fak
Last Changed Rev: 713
Last Changed Date: 2008-08-29 00:40:53 +0300 (Fri, 29 Aug 2008)
$ svn up
At revision 721.
$ svn info
Path: .
...
Revision: 721
Last Changed Author: reuben
Last Changed Rev: 721
Last Changed Date: 2008-08-31 22:55:22 +0300 (Sun, 31 Aug 2008)
Run Code Online (Sandbox Code Playgroud) 我正在尝试在哈德森中建立我们的构建过程.
作业1将是一个超级快速(希望)持续集成构建作业,将经常构建.
作业2,将负责定期运行综合测试套件或手动触发.
Job 3将负责在整个代码库中运行分析工具(非常类似于Job 2).
我尝试使用"高级项目选项>使用自定义工作区"功能,以便在作业1中编译的代码可以在作业2和3中使用.但是,似乎所有构建工件都保留在作业1工作区内.我这样做对吗?有没有更好的方法呢?我想我正在寻找类似于构建管道设置的东西......这样就可以共享东西,并且可以分阶段执行相应的工作.
(我也考虑使用'批处理任务'......但似乎无法安排那些?只能手动触发?)
欢迎任何建议.谢谢!
build-automation continuous-integration build-process hudson build
构建解决方案/项目/计划意味着什么?我想确保我的定义是正确的(所以我在谈话时听起来不像个白痴).在IDE的,你可以(纠正我,如果我错了)编译源代码/编程码成计算机可读的机器代码.您可以调试程序,这基本上是通过程序逐步执行并查找错误.
但是,构建一个程序究竟做了什么呢?在VS中,我知道在构建程序时,它会在调试文件夹中生成一个可执行文件.
关于构建程序意味着什么的任何核心技术定义?
在Xcode中,有没有办法指定文件夹中的所有文件都是由目标编译的.例如.'Test'目标自动编译'Tests'文件夹中的所有文件,而'App'目标编译'Sources'文件夹中的所有内容.
今天,我这样做的方法是每次创建一个文件到目标.由于文件已经组织在正确的文件夹中,因此感觉有点容易出错和冗余.
谢谢.
这是我对cmake的第一次尝试,如果可能的话,我希望有一些关于我做了什么的反馈,因为一些问题仍然存在.
在库文件夹的CMakeLists.txt中,我创建了两个makefile目标:configure-antlr3c和antlr3c.第一个目标运行autotools配置shell脚本,第二个目标运行make可执行文件来构建库:
# CMakeLists.txt in libantlr3c-3.1.3
add_custom_target(
configure-antlr3c
${SHELL_EXECUTABLE} configure
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(
antlr3c
${MAKE}
DEPENDS configure-antlr3c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
Run Code Online (Sandbox Code Playgroud)
主要问题是configure-antlr3c目标总是"过时",因此即使没有发生任何变化也会始终执行.此外,我一定需要在一个单独的目录中生成我的cmake makefile(不在我的项目的根目录中),以避免覆盖库的autotools Makefile ...
有谁有这个问题(用cmake构建autotools项目)?如果是这样,你的解决方案是什么?
谢谢.
编辑:解决方案 在根CMakeLists.txt中:
include(ExternalProject)
ExternalProject_Add(
libantlr3c
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
BUILD_COMMAND make
BUILD_IN_SOURCE 1
)
Run Code Online (Sandbox Code Playgroud) build-automation ×10
build ×5
cmake ×3
antlr3 ×1
autotools ×1
batch-file ×1
build-system ×1
c# ×1
clickonce ×1
definition ×1
gcc ×1
hudson ×1
jenkins ×1
svn ×1
version ×1
xcode ×1