相关疑难解决方法(0)

为调试和发布配置设置cmake目标名称

我试图区分调试和发布版本.

如果调试构建过程中我想安装MYLIB d在/ usr/local/lib目录.如果正在发布版本,我想在/ usr/local/lib中安装myLib.

这是我的方法

IF(CMAKE_BUILD_TYPE MATCHES RELEASE)
    SET(LIB_NAME myLib) 
ELSE()
    SET(LIB_NAME myLibd) 
ENDIF(CMAKE_BUILD_TYPE MATCHES RELEASE)

ADD_LIBRARY(${LIB_NAME} ${Source_files} ${Header_files})
INSTALL(TARGETS ${LIB_NAME} DESTINATION /usr/local/lib)
Run Code Online (Sandbox Code Playgroud)

但是,目标名称在两种情况下(CMAKE_BUILD_TYPE = Debug或Release)始终是myLib d.这里有什么问题?

debugging configuration release cmake

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

CMake 有 Profile 的构建类型吗?

CMake 有多种构建类型,例如发布、调试、带有调试信息的发布和最小大小发布。我想知道用户是否可以添加其他构建类型(例如 Profile),以及这是否是其他程序员的众所周知的做法。

profiler cmake

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

cmake的默认构建配置是什么

答案中,它说“调试”是默认的cmake构建配置。

但是我有不同的看法:

我在CMakeLists.txt中遵循以下命令,根据当前的构建配置选择lib的调试和发行版本。

target_link_libraries(MyApp debug Widgets_d)
target_link_libraries(MyApp optimized Widgets)
Run Code Online (Sandbox Code Playgroud)

似乎当我不分隔-DCMAKE_BUILD_TYPE标志而调用cmake时,将使用小部件而不是Widgets_d(当我删除小部件并尝试构建时,会抱怨lib不存在)。因此,这意味着默认情况下将优化构建配置,而不是调试。

那么,默认的构建配置到底是什么?如果是调试,我的CMakelists.txt可能是什么问题?

c++ cmake

4
推荐指数
2
解决办法
7772
查看次数

仅将变量传递到子目录

如何将项目特定变量传递到子目录?我想知道是否有"官方"方式这样做:

# (CMAKE_BUILD_TYPE is one of None, Debug, Release, RelWithDebInfo)

# ...

# set specific build type for 'my_library'
set( CMAKE_BUILD_TYPE_COPY "${CMAKE_BUILD_TYPE}" )
set( CMAKE_BUILD_TYPE "Release" )
add_subdirectory( "my_library" )
set( CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE_COPY} )

# continue with original build type
# ...
Run Code Online (Sandbox Code Playgroud)

库/子目录my_library应始终为buildt类型"Release",主项目和其他子目录应该是buildt,其类型由配置定义.我不能修改CMakeLists.txtmy_library.

cmake

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

CMake 构建类型没有区别

我在 C++ 领域工作了很多年,但对 CMake 还很陌生。

我用构建我的应用程序

cmake --build build_dir --config Debug --target all -- -j 1
Run Code Online (Sandbox Code Playgroud)

这工作正常并构建调试版本。

如果我将 --config 更改为其他内容,例如使用以下命令发布:

cmake --build build_dir --config Release --target all -- -j 1
Run Code Online (Sandbox Code Playgroud)

忍者说“没有工作可做”并退出。运行编译后的应用程序,它显然没有得到优化。此 Cmake 项目中还有两个其他选项,RelWithDebug 和 MinSizeRel,它们的作用相同。

在CmakeLists.txt中有:

set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo")
Run Code Online (Sandbox Code Playgroud)

还有很多其他提到的各种类型,但目前对我来说都有点希腊语。

我该怎么做才能找出问题出在哪里?

cmake

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

如何在没有调试符号和没有优化的情况下创建cmake构建配置?

我认为默认配置类型可以像这样描述:

Debug          : w/ debug symbols, w/o optimization
Release        : w/o debug symbols, w/ optimization
RelWithDebInfo : w/ debug symbols, w/ optimization
MinSizeRel     : w/o debug symbols, w/ optimization, stripped binaries
Run Code Online (Sandbox Code Playgroud)

但我需要新的:

MyConf         : w/o debug symbols, w/o optimization
Run Code Online (Sandbox Code Playgroud)

那么,如何创建呢?

c++ cmake

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

标签 统计

cmake ×6

c++ ×2

configuration ×1

debugging ×1

profiler ×1

release ×1