如何在不更改CMakeLists.txt的情况下(可能通过CLI)将CFLAGS和CXXFLAGS传递给cmake
how can I pass CFLAGS and CXXFLAGS to cmake without altering the CMakeLists.txt (through CLI perhaps?)
我无法更改我工作的项目的CMakeLists.txt,其中使用的cmake工具链文件仅声明C和CXX FLAGS用于发布。
因此,为了进行调试,我需要强制使用自己的标志(即将-O0-DDEBUG附加到CFLAGS和CXXFLAGS(。
因此,我使用以下示例尝试了cli
main.cpp:
#include <iostream>
int main(int argc, char * argv[])
{
std::cout << "hello worldn";
return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.1)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
#prescon settings
project(cmakecflags)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CXX_EXTENSIONS NO)
enable_testing()
add_executable(cmakecflagsapp
main.cpp
)
message(CFLAGS=${CFLAGS})
message(CXXFLAGS=${CXXFLAGS})
调用cmake:
CFLAGS=' -O0 -DDEBUG ' CXXFLAGS=' -O0 -DDEBUG ' cmake -G 'Unix Makefiles' -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Debug .
预期的结果使2个变量为空
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CFLAGS=
CXXFLAGS=
-- Configuring done
-- Generating done
我在想。
我尝试使用cmake"--trace"来查看正在执行的操作,但我找不到cmake将从相同名称的env变量初始化其变量的相关部分。
还有其他变量可以使用吗?也许换一种方式?
您可以使用-DCMAKE_CXX_FLAGS="-O0 -DDEBUG"
设置标志如:
cmake -DCMAKE_CXX_FLAGS=CFLAGS="-O0 -DDEBUG " -DCMAKE_C_FLAGS="-O0 -DDEBUG " -G 'Unix Makefiles' -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Debug .
相关文章:
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- VS2010 C++ 调试托管 (C++/CLI) DLL
- 如何将 C++/CLI 库链接到C++应用程序
- C++/CLI targetting .NET Core 3.1
- 模板函数签名在 C++/CLI 中解包
- C++/CLI 混合托管/本机 DLL 不起作用
- C++/CLI 和 C#/VB 与不安全和外部有什么区别?
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- DirectX 12 和 C++ CLI :无法使用IID_PPV_ARGS
- 如何为要在 C# 中使用的静态库创建 C++ 或 C++/CLI 包装器
- 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序
- C++/CLI -- 访问结构成员
- 如何将字符串从 C++/CLI 方法返回到调用它的非托管C++
- 如何将CLI类的函数指针作为参数传递给C++方法
- 用于LabView中使用的本机c++的c++/cli dll包装器
- C#WPF和C++/CLI以及C++在C++/CLI中添加外部库错误
- 如何在不更改CMakeLists.txt的情况下(可能通过CLI)将CFLAGS和CXXFLAGS传递给cmake