컴파일러 옵션 설정에 대한 우려 사항을 해결하려면 다양한 컴파일러 및 구성에 대해 업데이트되고 향상된 접근 방식은 다음과 같습니다.
<code class="cmake">cmake_minimum_required(VERSION 3.15) project(HelloWorld) string( APPEND CXX_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>," "/W4;$<$<CONFIG:RELEASE>:/O2>," "-Wall;-Wextra;-Werror;" "$<$<CONFIG:RELEASE>:-O3>" "$<$<CXX_COMPILER_ID:Clang>:-stdlib=libc++>" ">" ) add_compile_options("${CXX_FLAGS}") add_executable(HelloWorld "main.cpp") target_compile_features(HelloWorld PUBLIC cxx_lambda_init_captures)</code>
개선 사항:
각 컴파일러와 구성에 자체 대상이 있는 다중 대상 프로젝트의 경우 다음 접근 방식을 사용할 수 있습니다.
<code class="cmake">cmake_minimum_required(VERSION 3.15) project(HelloWorld) set(COMPILERS MSVC Clang GNU) set(CONFIGURATIONS Debug Release) foreach(_compiler IN LISTS COMPILERS) foreach(_config IN LISTS CONFIGURATIONS) add_executable(HelloWorld_${_compiler}_${_config} "main.cpp") # Set compiler flags for this target target_compile_options(HelloWorld_${_compiler}_${_config} PUBLIC "$<IF:$<CXX_COMPILER_ID:${_compiler}>," "/W4;$<$<CONFIG:${_config}>:/O2>," "-Wall;-Wextra;-Werror;" "$<$<CONFIG:${_config}>:-O3>" "$<$<CXX_COMPILER_ID:Clang>:-stdlib=libc++>" ">" ) # Set C++ feature requirements for this target target_compile_features(HelloWorld_${_compiler}_${_config} PUBLIC cxx_lambda_init_captures) endforeach() endforeach()</code>
개선 사항:
다음은 다음과 같습니다. 도움이 될 수 있는 추가 리소스:
위 내용은 다중 대상 CMake 프로젝트에서 컴파일러 플래그를 효율적으로 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!