set(TestProject_additional_libs
optimized foobar.lib
debug foobard.lib
}
특히 최적화/디버그 란 무엇입니까? 이것은 cmake를 사용하여 libs를 추가하는 표준 방법입니까?다음 cmake 스 니펫은 무엇입니까?
set(TestProject_additional_libs
optimized foobar.lib
debug foobard.lib
}
특히 최적화/디버그 란 무엇입니까? 이것은 cmake를 사용하여 libs를 추가하는 표준 방법입니까?다음 cmake 스 니펫은 무엇입니까?
내게 "오용"처럼 보입니다. 그것들은 모두 변수 TestProject_additional_libs
에 할당됩니다. 마법은 아마도 나중에 target_link_libraries과 같이 확장 될 때 발생합니다. 나는 그런 것을 할 수 있다는 것을 몰랐다. 그러나 실제로 이런 방식으로 쓰여졌을 때 실제로 어떤 일이 일어나고 있는지는 명확하지 않습니다.
상기 링크에서 수동 인용 : "최적화"또는 "일반"키워드는 라이브러리가 바로이 해당 빌드 구성에만 사용되는 다음을 나타냅니다
A "디버그" .
변수 TestProject_additional_libs
의 값을 optimized;foobar.lib;debug;foobard.lib
을 포함하는 세미콜론으로 구분 된 목록으로 설정합니다.
일반적으로 ${TestProject_additional_libs}
다음 foobar.lib
최적화에 사용 (릴리스 등) 구축 및 foobard.lib
디버그에 사용되어야되어야 함을 나타 내기 위해 target_link_libraries
명령에 사용되는 빌드 :
target_link_libraries(<target> <files> ${TestProject_additional_libs})
임시을 만드는 방지하려면 변수 인 경우 target_link_libraries
호출 자체에서 유사한 구문을 사용할 수도 있습니다.
target_link_libraries(<target> <files> optimized foobar.lib debug foobard.lib)
mlt는 다음과 같습니다. 대부분 라이브러리에는 두 가지 버전이 있으며 target_link_libraries가 호출되면 CMAKE_BUILD_TYPE을 사용하여 연결할 대상을 찾습니다. – Doug
@mlt 오용이 아니므로,'target_link_libraries'가 어떻게 작동하도록 설계되어 있습니다. – Fraser
@Doug'CMAKE_BUILD_TYPE'은 make 기반 제너레이터에서만 지원되므로 "빌드 구성"에 관한 설명서의 @mlt 따옴표는 기술적으로 더 정확합니다. – Fraser