【发布时间】:2020-09-06 13:39:10
【问题描述】:
我正在尝试使用 CMakeLists.txt 将以下文件编译成两个不同的可执行文件。
这个文件是:main.cpp
#include <iostream>
#include <cassert>
int main(int, char**) {
std::cout << "Hello, world!\n";
assert(0);
return 0;
}
这是CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.0.0)
project(multi_Tar VERSION 0.1.0)
SET(CMAKE_CXX_FLAGS "-O3 -DNDEBUG")
SET(CMAKE_CXX_FLAGS_RELEASE "-O0")
add_executable(multi_Tar main.cpp)
add_executable(tests main.cpp)
set_target_properties(tests PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_RELEASE}")
此解决方案不起作用。当我运行 ./tests 时,我没有收到断言错误。
动机是使用相同的CMakeLists.txt 来测试有效性,并对相同的代码进行基准测试。
感谢您的帮助。
在@squareskittles 回答后编辑:
感谢您的回答!
(包括答案的代码:)
cmake_minimum_required(VERSION 3.0.0)
project(multi_Tar VERSION 0.1.0)
add_executable(multi_Tar main.cpp)
# Add the compile options for multi_Tar.
target_compile_definitions(multi_Tar PRIVATE -O3 -DNDEBUG)
add_executable(tests main.cpp)
# Add the compile options for tests.
target_compile_definitions(multi_Tar PRIVATE -O0)
我尝试使用您的解决方案,但出现以下错误:
<command-line>: error: macro names must be identifiers
<command-line>: error: macro names must be identifiers
CMakeFiles/multi_Tar.dir/build.make:62: recipe for target 'CMakeFiles/multi_Tar.dir/main.cpp.o' failed
make[2]: *** [CMakeFiles/multi_Tar.dir/main.cpp.o] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/multi_Tar.dir/all' failed
make[1]: *** [CMakeFiles/multi_Tar.dir/all] Error 2
Makefile:105: recipe for target 'all' failed
make: *** [all] Error 2
我尝试稍微更改CMakeLists.txt,但没能成功。
此外,您的解决方案中的最后一行是否应该是:
target_compile_definitions(multi_Tar PRIVATE -O0)
或
target_compile_definitions(tests PRIVATE -O0)
【问题讨论】:
标签: c++ visual-studio-code cmake