在这种情况下,就可以通过 CMake 的两个关键字debug和optimized来区分配置,在 Debug 编译时链接库msvcrtd.lib,在 Release 编译时链接库msvcrt.lib。 示例: set(target_name Demo) # 区分 debug 和 release 下不同的链接库target_link_libraries(${target_name} PUBLIC debug msvcrtd.lib optimized msvcrt.lib) 2...
endif()if(NOT DEFINED CMAKE_MINSIZEREL_POSTFIX)set(CMAKE_MINSIZEREL_POSTFIX"_release") endif() endif() 上面命令分别设置Debug模式下后缀为“_debug”,在Release模式下后缀为“_release”。 可以在根目录下的的CMakeLists.txt文件中设置该命令,则整个项目中子工程的dll和lib都会添加相应的后缀。 要注意该命...
使用的工程有自己编写的工程,也有借用第三方库的工程,还有没有办法找到源码的,只有dll和lib库,没有区分debug和release 版本的。 cmake代码,生成vs后,都可以自动的添加链接库,debug和release版本泾渭分明。 二、自己工程之间的引用 先说,自己编写的工程,工程直接的相互调用,这个就不用多说了。Cmake还是要调用target_...
target_link_libraries(ARSDK PRIVATE ${EXTERNAL_ROOT}/lib/libprotobuf$<$<CONFIG:Debug>:d>.lib ...
CMakeLists.txt:SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") 而执行命令 find * | xargs grep "O3" 后结果如下: CMakeCache.txt:CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUGCMakeCache.txt:CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUGCMakeFiles/main.dir/flags.make:CXX...
Debug>:d>.lib )使用变量$<CONFIG:Debug>变量来控制是否加字符d
即Release版本。两者所用的动态连接库是不一样的,Release版本所需要的dll和lib已经包含在Windows的system(或者system32)下,所以只需要拷贝就可以运行了,但是Debug版本需要的dll和lib是在安装vc时装上去的,如果你想直接将debug版本给用户,需要拷贝几个文件,但这样显得很臃肿,一般来说不可取。
很多时候我们用cmake编译第三方库时发现debug和release版本编译的库文件同名,使用起来非常不方便。在用cmake GUI客户端配置时,只需要新建如下配置项即可: CMAKE_DEBUG_POSTFIX # 含义为为DEBUG版本的库添加后缀比如d 配置结果 添加过程 这样编译的出来的DEBUG库就会自动添加d为后缀...
尽管如此,为了减少参数传递的复杂性,可以通过修改CMAKE_CONFIGURATION_TYPES变量,设定Debug和Release等配置类型,这样只需在一处修改即可影响整个项目的构建。为解决库或二进制文件名统一带来的困扰,可以在文件名后加上配置后缀,如libname_Debug.lib或exe_name_Release.exe,以区分不同版本。