在这种情况下,就可以通过 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...
Windows上,习惯将debug模式下生成的动态库名后缀添加D 以作和release区分。cmake创建一个项目A,A引入动态库B,cmake怎么配置A链接动态库B的debug和release对应的库呢 本文的教程是基于 这里, 如果没有看,我推荐你先看下,再阅读本文。 核心函数 target_link_libraries# 就这一个核心函数,我通常使用它链接LIB。
使用的工程有自己编写的工程,也有借用第三方库的工程,还有没有办法找到源码的,只有dll和lib库,没有区分debug和release 版本的。 cmake代码,生成vs后,都可以自动的添加链接库,debug和release版本泾渭分明。 二、自己工程之间的引用 先说,自己编写的工程,工程直接的相互调用,这个就不用多说了。Cmake还是要调用target_...
target_link_libraries(ARSDK PRIVATE ${EXTERNAL_ROOT}/lib/libprotobuf$<$<CONFIG:Debug>:d>.lib ...
Debug>:d>.lib )使用变量$<CONFIG:Debug>变量来控制是否加字符d
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...
即Release版本。两者所用的动态连接库是不一样的,Release版本所需要的dll和lib已经包含在Windows的system(或者system32)下,所以只需要拷贝就可以运行了,但是Debug版本需要的dll和lib是在安装vc时装上去的,如果你想直接将debug版本给用户,需要拷贝几个文件,但这样显得很臃肿,一般来说不可取。
尽管如此,为了减少参数传递的复杂性,可以通过修改CMAKE_CONFIGURATION_TYPES变量,设定Debug和Release等配置类型,这样只需在一处修改即可影响整个项目的构建。为解决库或二进制文件名统一带来的困扰,可以在文件名后加上配置后缀,如libname_Debug.lib或exe_name_Release.exe,以区分不同版本。
add_executable(exam_lib ${exam_src})# to link dynamic library target_link_libraries(exam_calc ${PROJECT_NAME})它还可以配置debug和release 模式下的动态库。核⼼代码 # --- # 区分动态库的debug和release target_link_libraries ( ${PROJECT_NAME} PRIVATE debug ${calc_LIBRARY_debug} optimized ${...